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=?