s.evict(p);
s.saveOrUpdate(p);//insert。
tx.commit();//真正执行。FlushMode.AUTO.
s.close();
}
//saveOrUpdate():如果操作的是一个持久态对象,则不会发生变化
@Test
public void test5(){
Session s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
Person p = (Person)s.get(Person.class, 1);
s.saveOrUpdate(p);
tx.commit();
s.close();
}
//get和load的区别:
// 1、get立即检索;load是延迟检索(代理类)
// 2、get如果获取id数据库中不存在的记录,返回null;load会抛出异常
@Test
public void test6(){
Session s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
// Person p = (Person)s.get(Person.class, 100);//打印null
Person p = (Person)s.load(Person.class, 100);//抛异常
System.out.println(p);
tx.commit();
s.close();
}
//delete:持久变为瞬时
@Test
public void test7(){
Session s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
Person p = (Person)s.load(Person.class, 1);
s.delete(p);//计划执行删除语句
tx.commit();//真正执行
s.close();
}
}