我应该在哪里打开和关闭与存储库的连接?在"不要重复刀子“一文中写道:
DAO不负责处理事务、会话或连接。这些都是在DAO之外处理的,以实现灵活性。
但是有些人建议我将@Resource DataSource对象注入DAO类,并处理DAO方法中的所有连接。每个CRUD操作都应该打开和关闭到存储库的连接。
发布于 2013-01-18 10:48:32
采纳文章中的建议。
最好希望应用程序容器管理资源和连接池。如果您的连接配置了事务管理,那么容器将能够管理您的事务(因此不需要打开连接并进行提交)。
如果您自己管理连接和事务,首先打开连接,启用事务并将打开的连接传递给DAO,提交事务,然后关闭连接(DAO之外)。
一旦您的服务完成了所有DAO的,关闭连接。
希望这能有所帮助。
发布于 2013-01-18 10:42:32
我个人使用Spring来管理数据源。
在应用程序上下文xml中配置数据源bean。将其自动转到DAO,然后使用Spring处理DAO类上的@Transactional注释的事务。
您还需要在应用程序上下文中使用<tx:annotation-driven/>。
如果使用Hibernate,可以在应用程序上下文中配置SessionFactory。
发布于 2013-01-18 10:50:53
我同意您可以使用spring来管理事务,但同时要记住,管理事务并不是DAOs的职责。它们应该在您的服务层中处理,该层负责管理业务逻辑。
https://stackoverflow.com/questions/14397134
复制相似问题