通常的建议是在不再需要JDBC资源时关闭它。这可以在一个捕获和最后完成。但是,如果一个DAO方法只能操纵一个域对象,并且一个操作需要一次性检索/创建这些操作,那该怎么办呢?要获得一个声明,然后重复关闭它会成为性能问题?如果是这样,是否应该采取单独的方法一次处理多个对象或者应该以某种方式延迟关闭?Dao方法,操作单个/多个对象并关闭资源
2
A
回答
1
你可以在DAO层的顶部添加额外的事务层,并在交易/会话的开始Connection
打电话setAutoCommit(false)
,让DAO方法使用相同的Connection
实例,然后commit()
的Connection
当交易/会话完成/关闭。但是,您需要更改DAO方法以将Connection
作为额外参数,或者将其存储为ThreadLocal
(但由于可能会汇集线程,因此需要非常仔细地进行此操作)。
只要您始终使用通常在DB端编译和缓存的PreparedStatement
,创建语句不应该太昂贵。
1
我认为,如果应用程序是Dao的基础,这将是没有区别的。这些资源应该关闭。如果你的工作没有任何框架(弹簧,休眠等)
java.sql.Connection应该放回池中,如果有一个池。 执行查询后应关闭ResultSet和Statement对象。
取决于您的架构,这些资源管理代码可以放在Dao类或其他类中。例如有一些专注于构建和执行SQL查询的类。资源管理代码可以在这些类中。
如果您使用某些框架,框架通常会为您执行资源管理。
相关问题
- 1. 单个资源和多个资源
- 2. Groovy多重资源关闭
- 3. 调用操作方法,关闭对话框并刷新父
- 4. 无法关闭JDBC资源!
- 5. 传递多个JSON对象MVC3操作方法
- 6. 这个jdbc资源是关闭的吗?
- 7. 使用Amazon S3的单个操作下载多个对象
- 8. 多个资源
- 9. 单个对象Django管理操作
- 10. DAO方法检索单个条目
- 11. 多个GET方法单一的Restlet资源
- 12. 在单个资源中包含多个fhir资源
- 13. 关闭单个厨师食谱或资源的详细记录
- 14. 方法级别资源(例如:FileInputStream,Connection)未关闭,对象是否有资格进行垃圾回收,资源是否会关闭?
- 15. 无法对ImageData对象执行多个操作?
- 16. 来自多个可操作对象的Java Swing依赖关系
- 17. Rails单个资源作为两个其他资源的嵌套资源
- 18. 试用资源是否可能无法关闭资源?
- 19. 关闭和关闭onDestroy中的对象的最佳方法
- 20. 单个表单的多个操作
- 21. 差异资源关闭
- 22. 如何为资源指定多个GET操作
- 23. 如何在多个操作中共享一个对象的单个实例?
- 24. 一个对象的共享资源
- 25. DAO执行的几个操作
- 26. 迭代对象操作或一次更改多个对象
- 27. 为单个数据源实现DAO
- 28. 对html的多个操作?
- 29. 多个服务层对象应该共享一个DAO吗?
- 30. @Inject多个DAO