只是一个简单的MVC演示。
在Service类中,有一个
JDBCutil db=new JDBCutil();
db.beginTransation();
UserinfoDao dao=new UserinfoDao();
在UserinfoDao课程中,还有一个
JDBCutil db=new JDBCutil();
我认为有两个new JDBCutil
,但实际上只存在一个连接。
为什么呢?因为db.beginTransation();
?为什么?
我很抱歉这是我的错,不发布JDBCutil(感谢提及评论),它可能是“静态连接”(看起来像Singleton)一个连接,虽然有两个新的。代码
private static Connection conn=null;
private PreparedStatement pst;
//获取Connection连接
public Connection getConnection(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("加载Oracle驱动成功");
String url="jdbc:oracle:thin:@10.25.39.252:1521:orcl";
String userName="cccda";
String pwd="123456";
if(conn==null){
conn=DriverManager.getConnection(url, userName, pwd);
}
System.out.println("获取Connection连接成功");
} catch (ClassNotFoundException e) {
System.out.println("加载Oracle驱动失败");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("获取Connection连接失败");
e.printStackTrace();
}
return conn;
}
答案 0 :(得分:0)
您正在获取新的JDBCutil
实例,但这不是实际的JDBC Connection
。它可能会将单例连接与每用户实例类包装起来。没有代码,我们无法分辨。
此外,由于您看到单词new
两次,JDBCutil
个实例不一样,但这并不意味着它们不同时使用相同的JDBC Connection
赔率是内部db.beginTransaction()
调用代码映射回同一连接。如果没有,我想你会遇到更大的问题。