如何在JavaEE中使用JDBC?

时间:2012-03-19 09:28:47

标签: java-ee jdbc jta

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

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

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

public void foo() {
    Connection conn = ds.getConnection();
}

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

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

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

关闭connection- conn.close();