使用AOP打开和关闭数据库连接是一种很好的做法吗?我想在我的DAO类中使用AOP。使用AOP打开和关闭数据库连接
例如,内部方法public User createUser(String name)
我不想编写像Connection.open()
和Connection.close()
这样的代码,我想使用方面自动执行此操作。
使用AOP打开和关闭数据库连接是一种很好的做法吗?我想在我的DAO类中使用AOP。使用AOP打开和关闭数据库连接
例如,内部方法public User createUser(String name)
我不想编写像Connection.open()
和Connection.close()
这样的代码,我想使用方面自动执行此操作。
只要人们使用你的方法和API将知道该方法初始化连接,甚至更重要的是关闭它后,这是非常有意义的。不过,有些事情需要考虑。
想想API的一致性。所有方法是否打开和关闭连接?如果没有,为什么有些人不这样做,你应该怎么做才能明确表示他们不会使用API的人?
记住要考虑错误处理。当发生错误时,例如它抛出的异常,方法退出后的连接状态应该是unambigouos。
记住重入。如果一个方法可以从多个线程执行,并且影响全局状态,那么您很危险地接近一个灾难处方。确保安全并使其可以理解。
在旁注中,重新考虑每次方法调用后关闭连接。每次向数据库添加行时打开和关闭连接是否合理?性能方面,重新使用连接进行进一步查询更为合理。
使用ORM,如Hibernate或Eclipselink,加上Spring和Transactions/AOP,它会为您处理所有事情。
你不应该写一个好的持久性框架的Connection.open。这几天有很多选择。
Aspects在Java中对日志记录,安全性和缓存等方面有很多意义。但是我会将持久性内容留给持久性库。他们非常成熟,非常可靠。
如果它是一个web应用程序,您可能想要使用会话每请求模式。您可以使用HttpModule或ActionFilter来执行此操作。我会认为这是一个没有第三方AOP框架的AOP方法。另外:How can I implement a robust session-per-request pattern in my project, while focusing on information hiding?