saveOrUpdate()
代码案例:
?
public void TestsaveORUpdate(){
? Teacher t = new Teacher();
t.setName("zhuhw7");
t.setYourWifeName("yourWifeName");
Session session = sf.getCurrentSession();
session.beginTransaction();
session.saveOrUpdate(t);
session.getTransaction().commit();
?
t.setName("zhuhw8");
Session session2 = sf.getCurrentSession();
session2.beginTransaction();
session2.saveOrUpdate(t);
session2.getTransaction().commit();
}
?
?
?
clear()是清除缓存
?
代码案例:
@Test
public void TestClear(){
//从数据库中取出一条数据到缓存中
Session session = sf.getCurrentSession();
session.beginTransaction();
//参数是第一个是转换成哪种类型,第二个参数是实现序列化的-->在这里是id,已经实现的Integer已经实现了序列化
Teacher t = (Teacher)session.load(Teacher.class, 2);
System.out.println(t.getName());
//只执行一次sql,因为第一次执行后,将teache从缓存中取,不需要再次进行执行sql
//clear()是清除缓存,所以这时候会中2此sql
session.clear();
Teacher t2 = (Teacher)session.load(Teacher.class,2);
System.out.println(t.getName());
session.getTransaction().commit();
}
?
?
?
?
?
?
?
?
flush()将缓存中的数据强制与数据库中的数据同步
?
?
@Test
public void TestFlush(){
//从数据库中取出一条数据到缓存中
Session session = sf.getCurrentSession();
session.beginTransaction();
//参数是第一个是转换成哪种类型,第二个参数是实现序列化的-->在这里是id,已经实现的Integer已经实现了序列化
Teacher t = (Teacher)session.load(Teacher.class, 2);
//只在进行提交了,才进行执行update语句
? ? ? /* ?t.setName("ttt");
? ? ? ? t.setName("ttttt");*/
//flush()强制将缓存中的数据与数据库中的数据作同步,这时会执行两天update语句
t.setName("ttt");
session.flush();
? ? ? ? t.setName("ttttt");
?
session.getTransaction().commit();
}
?
执行结果:
?update
? ? ? ? Teacher?
? ? set
? ? ? ? birthdate=?,
? ? ? ? _name=?,
? ? ? ? title=?,
? ? ? ? yourWifeName=?,
? ? ? ? zhicheng=??
? ? where
? ? ? ? id=?
Hibernate:?
? ? update
? ? ? ? Teacher?
? ? set
? ? ? ? birthdate=?,
? ? ? ? _name=?,
? ? ? ? title=?,
? ? ? ? yourWifeName=?,
? ? ? ? zhicheng=??
? ? where
? ? ? ? id=?
033_CoreAPI_saveOrUpdate_Clear_Flush
原文:http://yuzhouxiner.iteye.com/blog/2269041