DAO和Connections

时间:2013-01-18 10:39:26

标签: java design-patterns dao

我应该在何处打开和关闭与存储库的连接?在文章" Dont repeat the DAO"写成:

  

DAO不负责处理交易,会话或   连接。这些是在DAO之外处理的,以实现灵活性。

但有些人建议我将@Resource DataSource对象注入DAO类并处理DAO方法中的所有连接......即。每个CRUD操作都应该打开和关闭与存储库的连接。

3 个答案:

答案 0 :(得分:5)

接受文章中的建议。

最好您希望应用程序容器管理资源和连接池。如果您的连接已配置事务管理,则容器将能够管理您的事务(因此无需打开连接并执行提交)。

如果您自己管理连接和事务,请首先打开连接,启用事务并将打开的连接传递给DAO,提交事务,然后关闭连接(在DAO之外)。

使用所有DAO完成服务后,请关闭连接。

希望这有帮助。

答案 1 :(得分:1)

我个人使用Spring来管理数据源。

在应用程序上下文xml中配置数据源bean。将它自动装入DAO,然后使用Spring通过DAO类上的@Transactional注释处理事务。

您的应用程序上下文中还需要<tx:annotation-driven/>

如果您正在使用Hibernate,您可以通过在应用程序上下文中配置SessionFactory来执行相同的操作。

答案 2 :(得分:0)

我同意您可以使用spring来管理交易,但同时请记住,管理交易不是DAO的责任。它们应该在您的服务层中处理,该层负责管理业务逻辑。