使用AOP打开和关闭数据库连接是一种好习惯吗?我想在我的DAO课程中使用AOP。
例如,在方法public User createUser(String name)
内部我不想编写像Connection.open()
和Connection.close()
这样的代码,我想使用方面自动完成。
答案 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方法。