使用什么冲洗模式’自动’或’提交’
正如我的标题所描述的,我在我的应用程序中使用了hibernateAuto
刷新模式机制。 因此,当我更改hibernate持久对象中的任何数据时,它会自动反映在数据库中。 我不想要这个。 所以我找到了一个使用FlushMode Commit
的解决方案。
所以这是我的实际问题:
- 使用
Commit
刷新模式而不是Auto
更好吗? 和 -
文档中此声明的含义是什么?
会话有时在查询执行之前刷新,以确保查询永远不会返回失效状态。
http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/FlushMode.html
Hibernate(和JPA)旨在自动检测并持久保存对数据库的持久对象的更改。 没有“保存”操作。
如果您不想保存任何内容,则应使用分离的对象。 使用StatelessSession
加载它们,或在加载对象后调用detach。 这会将它们从将自动保存它们的监视中删除。
不要搞乱冲洗设置,它会让你头疼。
使用提交刷新模式而不是自动更好
当您的应用程序使用查询时, FlushMode.COMMIT
很可能会更好地执行,因为它不会在每次查询之前刷新会话。 我知道每个javadoc它应该只在必要时刷新会话,但根据我的经验,FlushMode.COMMIT在只读会话中表现更好。 自动刷新并不意味着对持久对象的任何更改都会立即发布到数据库。
文件中指定的以下声明的含义是什么
会话有时在查询执行之前刷新,以确保查询永远不会返回失效状态。
正如我在上面使用FlushMode.AUTO(默认)时所做的那样,它将在对数据库进行的每个查询(HQL,Criteria,SQL查询)之前刷新会话,以确保结果将包含当前会话中添加的所有实体。
- 如何使用Hibernate Context会话创建Generic DAO类
- Spring-Hibernate在webapp中使用,什么是Thread安全会话管理的策略
- Hibernate映射exception – 无法确定类型:
- 避免hibernate延迟初始化exception
- 许多关系的jpa标准
- Hibernate包vs idbag
- 如何使用Hibernate @ Any-related注释?
- 无法创建sessionFactory object.org.hibernate.InvalidMappingException:无法解析资源Employee.hbm.xml中的映射文档
- LDAP:错误代码50 – 由于访问权限不足,无法添加条目uid = test @ info.com,ou = People,o = Drive,dc = company,dc = com