首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

元月份5日

2013-11-08 
1月5日Hivernate Interceptor:接口onSave onFlushDirty可在save update方法之前执行,以作Log来做历史记录

1月5日
Hivernate Interceptor:接口onSave onFlushDirty可在save update方法之前执行,以作Log来做历史记录为例SessionFactory sessionFactory = config.buildSessionFactory();MyIntercepor it = new MyInterceptor();Session session = sessionFactory.openSession(it);It.setSession(session);It.setUserID(“currenetUser”);TUser user = new TUser();User.setName(“Erica”);Transaction tx = session.beginTransaction();Session.save(user);Tx.conmit(); session.close();而在LifeCycle和Interceptor接口中都不能直接调用当前session,而定义的方法都将由当前session负责调用,但如果在这些方法中用了当前session进行持久化操作,则将导致session内部状态的混乱那么我们可以想到为了将log中的数据同业务数据分离可以重新获得一个新的session进行持久化操作,这种方法完全可行,但从性能上讲,一次操作需要两个数据库连接,势必影响到效率,这种方式有待商榷既然当前session实例无法重用,重用当前session的数据库连接多少能减少一点性能损耗我们可以通过Connnection connection = session.connection();得到当前连接,然后Session tempSession = HibernateUtil.getSessionFactory().openSession(connection); 这里依托session的JDBC connection创建了一个临时性的session用于保存log记录这里我们就无需再开启事务,这里的JDBC connection与session共享同一个事务。这里我们也不需要close

热点排行