如何在JavaEE中使用JDBC?

waf*_*waf 2 jta jdbc java-ee

我正在JavaEE环境(weblogic 12)中开发,我的部分代码使用JDBC; 因此,我需要从应用程序服务器获取JDBC连接.
我知道在JavaEE中使用JDBC是一种非常糟糕的做法,但这是一个我无法改变的代码(遗留).

我找到了一种方法,但我不确定这是正确的方法:

@Resource(mappedName="mydsjndipath")
private DataSource ds;

public void foo() {
    Connection conn = ds.getConnection();
}
Run Code Online (Sandbox Code Playgroud)

问题是我最后如何处理连接?
我无法真正提交/回滚它,因为我使用的是分布式事务.但我应该至少关闭它吗?
并且JTA事务将始终影响连接(在提交/回滚时)吗?

或许在JavaEE中使用JDBC还有另一种更好的方法吗?(不,EntityManager的本机查询不会这样做)

Sim*_*Sez 5

为什么使用JDBC是不好的做法

如果您的应用程序服务器支持JDBC,并且让他通过JDBC连接到数据库,那么对我自己来说,没有理由不在应用程序中使用它!?

另一种方法是在您的应用程序中手动加载驱动程序并从中获取连接.但这就像重新发明轮子一样!

你也忽略了它的优势

  • JDBC连接池的服务器端管理
  • 这种联系的可重用性

最后,您应该始终关闭Connection/Statement/ResultSet,如:

try {
  // your stuff here
}
finally {
  if(connection != null) {
    connection.close();
  }
  // same for statement/ResultSet ift not used anymore
}
Run Code Online (Sandbox Code Playgroud)

  • 我不明白。您的问题是如何处理最后的“连接”。答案是:**关闭它**。根据您的代码,您的服务器已经使用 JDBC 并将管理您的提交/回滚功能。因此,您发表了声明“JDBC 是不好的做法”,我(和其他一些用户)投入了我的两分钱。没有冒犯的意思!干杯! (2认同)