1

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

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

4

3 回答 3

1

只要使用您的方法和 API 的人都知道该方法会初始化连接,更重要的是,它会在之后关闭它,那么这样做就非常有意义。不过,有些事情需要考虑。

想想 API 的一致性。所有方法都打开和关闭连接吗?如果不是,为什么有些人不这样做,您应该如何向使用 API 的人明确表示他们不这样做?

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

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

附带说明一下,在每次方法调用后重新考虑关闭连接。每次向数据库中添加一行时打开和关闭连接是否有意义?在性能方面,将连接重用于进一步的查询更为合理。

于 2012-12-07T09:07:33.667 回答
0

使用 ORM,如 Hibernate 或 Eclipselink,再加上 Spring 和 Transactions / AOP,它会为您处理一切。

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

在 Java 中,方面对于日志记录、安全性和缓存等方面非常有意义。但是我会把持久性的东西留给持久性库。他们非常成熟并且非常可靠。

于 2012-12-07T22:14:32.523 回答
0

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

另请参阅:如何在我的项目中实现健壮的每请求会话模式,同时专注于信息隐藏?

于 2012-12-11T16:40:43.187 回答