我正在JavaEE环境(weblogic 12)中开发,我的部分代码使用JDBC;因此,我需要从应用程序服务器获取JDBC连接 我知道在JavaEE中使用JDBC是一种非常糟糕的做法,但这是一个我无法改变的代码(遗留)。
我找到了办法,但我不确定这是正确的方法:
@Resource(mappedName="mydsjndipath")
private DataSource ds;
public void foo() {
Connection conn = ds.getConnection();
}
问题是我最后如何处理连接?
我无法真正提交/回滚它,因为我使用的是分布式事务。但我至少应该关闭它吗?
并且JTA事务是否总是会影响连接(在提交/回滚时)?
或许还有另一种在JavaEE中使用JDBC的更好方法? (不,EntityManager的本机查询不会这样做)
答案 0 :(得分:5)
为什么使用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();