什么是实现Hibernate 4数据库写操作的事实上的方法?

时间:2014-09-08 12:55:41

标签: java spring hibernate hibernate-4.x

当我将我的应用程序从Spring 1.0升级到Hibernate 3.0.5到使用Spring 4.0.6的Hibernate 4.3.5.Final时,我得到以下异常。

Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
  at org.springframework.orm.hibernate4.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1135)
  at org.springframework.orm.hibernate4.HibernateTemplate$26.doInHibernate(HibernateTemplate.java:826)
  at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(HibernateTemplate.java:340)
  at org.springframework.orm.hibernate4.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:308)
  at org.springframework.orm.hibernate4.HibernateTemplate.deleteAll(HibernateTemplate.java:823)
  ... 

我花了几天时间做了一些研究,尝试了不同的事情,并问了下面的问题: How can I globally set FlushMode for Hibernate 4.3.5.Final with Spring 4.0.6?

似乎我可以使用2种情况,但我仍然没有找到推荐的方法。

方法1:

实现OpenSessionInViewFilter的自定义版本,将默认的FlushMode设置为AUTO。

方法2:

使用TransactionManager,并将@Transactional注释添加到对数据库具有写访问权限的每个方法。 这可以通过以下方式完成:Spring Hibernate transaction management


任何人都可以提供任何建议,或者指出与&#34相关的任何文档;从版本x.x.x开始,这就是我们现在应该如何实现Hibernate的方式!"

非常感谢

0 个答案:

没有答案