033_CoreAPI_saveOrUpdate_Clear_Flush

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)