使用 AOP 打开和关闭数据库连接是一种好习惯吗?我想在我的 DAO 类中使用 AOP。
例如,在方法内部public User createUser(String name)
我不想编写类似Connection.open()
and的代码Connection.close()
,我想使用方面自动完成。
使用 AOP 打开和关闭数据库连接是一种好习惯吗?我想在我的 DAO 类中使用 AOP。
例如,在方法内部public User createUser(String name)
我不想编写类似Connection.open()
and的代码Connection.close()
,我想使用方面自动完成。
只要使用您的方法和 API 的人都知道该方法会初始化连接,更重要的是,它会在之后关闭它,那么这样做就非常有意义。不过,有些事情需要考虑。
想想 API 的一致性。所有方法都打开和关闭连接吗?如果不是,为什么有些人不这样做,您应该如何向使用 API 的人明确表示他们不这样做?
记住要考虑错误处理。当发生错误时,例如它抛出的异常,方法退出后的连接状态应该是明确的。
牢记重入。如果一个方法可以从多个线程中执行并且它会影响全局状态,那么你就危险地接近灾难的根源。使其安全并使其易于理解。
附带说明一下,在每次方法调用后重新考虑关闭连接。每次向数据库中添加一行时打开和关闭连接是否有意义?在性能方面,将连接重用于进一步的查询更为合理。
使用 ORM,如 Hibernate 或 Eclipselink,再加上 Spring 和 Transactions / AOP,它会为您处理一切。
您永远不必使用良好的持久性框架编写 Connection.open。这些天有很多选择。
在 Java 中,方面对于日志记录、安全性和缓存等方面非常有意义。但是我会把持久性的东西留给持久性库。他们非常成熟并且非常可靠。
如果它是一个 Web 应用程序,您可能希望使用每请求会话模式。您可以使用 HttpModule 或 ActionFilter 来执行此操作。我认为这是一种没有第三方 AOP 框架的 AOP 方法。