2012-12-07 55 views
1

使用AOP打开和关闭数据库连接是一种很好的做法吗?我想在我的DAO类中使用AOP。使用AOP打开和关闭数据库连接

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

回答

1

只要人们使用你的方法和API将知道该方法初始化连接,甚至更重要的是关闭它后,这是非常有意义的。不过,有些事情需要考虑。

想想API的一致性。所有方法是否打开和关闭连接?如果没有,为什么有些人不这样做,你应该怎么做才能明确表示他们不会使用API​​的人?

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

记住重入。如果一个方法可以从多个线程执行,并且影响全局状态,那么您很危险地接近一个灾难处方。确保安全并使其可以理解。

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

0

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

你不应该写一个好的持久性框架的Connection.open。这几天有很多选择。

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