使用AOP打开和关闭与数据库的连接

时间:2012-12-07 08:56:42

标签: c# java php language-agnostic aop

使用AOP打开和关闭数据库连接是一种好习惯吗?我想在我的DAO课程中使用AOP。

例如,在方法public User createUser(String name)内部我不想编写像Connection.open()Connection.close()这样的代码,我想使用方面自动完成。

3 个答案:

答案 0 :(得分:1)

只要使用您的方法和API的人意识该方法初始化连接,并且更重要的是,之后关闭它,这样做是完全合理的。但是有些事情需要考虑。

考虑API的一致性。所有方法都打开和关闭连接吗?如果没有,为什么有些人不这样做,你应该怎么做以明确他们不会使用API​​?

请记住将错误处理考虑在内。当发生错误时,例如抛出的异常,方法退出后的连接状态应该是unambigouos。

记住重入。如果一个方法可以从多个线程执行并且它影响全局状态,那么你就会危险地接近灾难的配方。使其安全并使其易于理解。

在旁注中,重新考虑每次方法调用后关闭连接。每次在数据库中添加行时打开和关闭连接都有意义吗?在性能方面,重用连接进行进一步查询更合理。

答案 1 :(得分:0)

使用ORM,如Hibernate或Eclipselink,再加上Spring和Transactions / AOP,它会为您处理所有事情。

您永远不必使用良好的持久性框架编写Connection.open。这些天有很多选择。

对于日志记录,安全性和缓存等问题,Aspects在Java方面有很多意义。但我会将持久性内容留给持久性库。它们非常成熟且非常可靠。

答案 2 :(得分:0)

如果是Web应用程序,您可能希望使用每个请求的会话模式。您可以使用HttpModule或ActionFilter来执行此操作。我认为这是一种没有第三方AOP框架的AOP方法。

另请参阅:How can I implement a robust session-per-request pattern in my project, while focusing on information hiding?