在更新之前选择休眠

Dam*_*ask 4 java entity-relationship hibernate

在我的工作中,我使用带有exidirect的spring,在服务器端使用hibernate,在客户端使用extjs.当我发布表单时,在服务器端spring将其转换为实体.实体有一个id字段,它假定更新操作.我正在调用服务保存方法,但是一个sql 更新查询我获得了许多选择查询,然后更新.这需要很长时间.并且不需要这种操作.我正在寻找类似的问题,并试图使用持久化方法.这种情况我得到错误:传递给持久化的分离实体.

我没有足够的hibernate经验.可能是我需要配置相关实体​​(OneToMany,ManyToOne和级联类型).实体由Spring roo工具生成.

有什么建议 ?谢谢.

Raf*_*afa 6

这不是您问题的最终答案,但我希望它可以作为高级指南.

使用Spring创建实体时,该实体已分离,Hibernate执行这些SELECT语句,因为它需要在持久化之前附加您的实体.另外,据我所知,任何附加实体的尝试都会触发SELECT语句.因此,我坚信如果没有这些SELECT语句,没有任何方法可以保存/持久化您的分离实体(我可能在这里错了).

如果您担心性能,可以尝试向应用程序添加一些缓存功能.此外,您还可以仅为具有性能的操作包含JDBC解决方案.

  • 如果在单个实体中有许多关系,可能在UPDATE之前导致许多SELECT.有许多瀑布吗?如果是,请尝试减少级联数量.此外,还有很多渴望的关系吗?尝试将其移至Lazy. (3认同)