session flush方法主要做了两件事:
 * 清理缓存
 * 执行sql
 
session在什么情况下执行flush
 * 默认在事务提交时
 * 显示的调用flush
 * 在执行查询前,如:iterate
 
hibernate按照save(insert),update、delete顺序提交相关操作

例:当我们想以下顺序执行代码(先insert,再update,再insert),代码如下:

 1NHibernate Session Flush的作用session = HibernateUtils.getSession();
 2NHibernate Session Flush的作用tx = session.beginTransaction();
 3NHibernate Session Flush的作用
 4NHibernate Session Flush的作用User3 user = new User3();
 5NHibernate Session Flush的作用user.setId("001");
 6NHibernate Session Flush的作用user.setName("张三");
 7NHibernate Session Flush的作用    
 8NHibernate Session Flush的作用session.save(user);
 9NHibernate Session Flush的作用            
10NHibernate Session Flush的作用user.setName("王五");
11NHibernate Session Flush的作用session.update(user);
12NHibernate Session Flush的作用        
13NHibernate Session Flush的作用User3 user3 = new User3();
14NHibernate Session Flush的作用user3.setId("002");
15NHibernate Session Flush的作用user3.setName("李四");
16NHibernate Session Flush的作用session.save(user3);
17NHibernate Session Flush的作用    
18NHibernate Session Flush的作用//Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
19NHibernate Session Flush的作用//Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
20NHibernate Session Flush的作用//Hibernate: update t_user3 set name=?, password=?, create_time=?, expire_time=? where user_id=?
21NHibernate Session Flush的作用//hibernate按照save(insert),update、delete顺序提交相关操作
22NHibernate Session Flush的作用tx.commit();
执行上面的代码,通过查看日志,得到的执行顺序为insert,insert,update
因此可以用session.flush来实现执行,代码如下:
 1NHibernate Session Flush的作用session = HibernateUtils.getSession();
 2NHibernate Session Flush的作用tx = session.beginTransaction();
 3NHibernate Session Flush的作用
 4NHibernate Session Flush的作用User3 user = new User3();
 5NHibernate Session Flush的作用user.setId("003");
 6NHibernate Session Flush的作用user.setName("张三");
 7NHibernate Session Flush的作用            
 8NHibernate Session Flush的作用session.save(user);
 9NHibernate Session Flush的作用    
10NHibernate Session Flush的作用user.setName("王五");
11NHibernate Session Flush的作用session.update(user);
12NHibernate Session Flush的作用            
13NHibernate Session Flush的作用session.flush();
14NHibernate Session Flush的作用        
15NHibernate Session Flush的作用User3 user3 = new User3();
16NHibernate Session Flush的作用user3.setId("004");
17NHibernate Session Flush的作用user3.setName("李四");
18NHibernate Session Flush的作用session.save(user3);
19NHibernate Session Flush的作用        
20NHibernate Session Flush的作用//Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
21NHibernate Session Flush的作用//Hibernate: update t_user3 set name=?, password=?, create_time=?, expire_time=? where user_id=?
22NHibernate Session Flush的作用//Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
23NHibernate Session Flush的作用//因为我们在session.udpate(user)后执行了flush,所以在清理缓存时执行flush前的sql不会生成
24NHibernate Session Flush的作用//sql会按照我们的意愿执行
25NHibernate Session Flush的作用tx.commit();这样我们就实现insert,update,insert的顺序。这在一些复杂的情况下很有用

相关文章:

  • 2021-10-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-25
猜你喜欢
  • 2022-02-08
  • 2021-06-23
  • 2022-01-14
  • 2021-07-05
  • 2022-01-27
  • 2022-12-23
  • 2021-08-25
相关资源
相似解决方案