我正在尝试为Spring/Hibernate应用程序找到一个好的设计.在创建这样的应用程序时,似乎有一些重大决策.
第一个主要决定似乎是放置会话/事务边界的位置.看起来我有三个主要选择:作为控制器甚至调用之前的过滤器,紧接在服务调用级别的控制器之下,并且在存储库调用中的业务级别之下填充.
在我看来,正确的呼叫是中间路径,但我不确定.我不希望我的事务打开太长时间,但同时,我不想经常担心业务逻辑中的分离对象和延迟加载.不过,还有一些缺点.例如,它使业务逻辑很难在没有暂停事务几秒钟的情况下进行远程调用.我想知道是否有更好的方法?
除非您的 dao 方法包含业务逻辑,否则将事务限制为 dao 调用是没有意义的。我认为这是接近“自动提交”模式的有用方法。
无论如何,如果您希望保持事务简短,我建议您仔细观察每个业务用例的“sql 足迹”(通过将 org.hibernate.SQL 日志类别设置为 DEBUG)并将生成的 sql 与生成的 sql 进行比较你会自己写的。
大多数时候我看到缓慢的用例,这是因为 hibernate 延迟加载功能没有正确配置(它要么太急切,在每个查询中添加十二个级别的连接,要么太懒,按集合元素发出查询)
| 归档时间: |
|
| 查看次数: |
877 次 |
| 最近记录: |