日志内容:具体用户,用户操作的内容,用户操作的时间。
传统方式就是通过session工厂中拿,一次拿一次session。但日志的内容的存储应该和事务操作一起,出现失误应一起回滚。
这时候,我们可以让日志存储(有个日志业务对象,HibernateUitls.getSessionFactory().getCurrentSession().save())和其他操作共用一个session,若不对hibernate进行配置,就要手动的写ThreadLocal。这样因为是同一个session,两个业务之间就共用了一个事务。
另外:由于是不同的业务,不能再当前业务中进行存储日志,而应该拿到运营业务的接口,并通过实现类中的存储日志方法,来降低不同业务之间的耦合性。
实现方式:
我们可以可以通过getCurrentSession(),来从当前线程中绑定的session(必须要做个配置,在cfg配置文件中配置current_session_context_class中配置thread),这样就使用了本地线程的技术。