我应该在何处打开和关闭与存储库的连接?在文章" Dont repeat the DAO"写成:
DAO不负责处理交易,会话或 连接。这些是在DAO之外处理的,以实现灵活性。
但有些人建议我将@Resource DataSource
对象注入DAO类并处理DAO方法中的所有连接......即。每个CRUD操作都应该打开和关闭与存储库的连接。
答案 0 :(得分:5)
接受文章中的建议。
最好您希望应用程序容器管理资源和连接池。如果您的连接已配置事务管理,则容器将能够管理您的事务(因此无需打开连接并执行提交)。
如果您自己管理连接和事务,请首先打开连接,启用事务并将打开的连接传递给DAO,提交事务,然后关闭连接(在DAO之外)。
使用所有DAO完成服务后,请关闭连接。
希望这有帮助。
答案 1 :(得分:1)
我个人使用Spring来管理数据源。
在应用程序上下文xml中配置数据源bean。将它自动装入DAO,然后使用Spring通过DAO类上的@Transactional
注释处理事务。
您的应用程序上下文中还需要<tx:annotation-driven/>
。
如果您正在使用Hibernate,您可以通过在应用程序上下文中配置SessionFactory
来执行相同的操作。
答案 2 :(得分:0)
我同意您可以使用spring来管理交易,但同时请记住,管理交易不是DAO的责任。它们应该在您的服务层中处理,该层负责管理业务逻辑。