gpt4 book ai didi

java - 为什么service和dao的JDBC连接是一样的?

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:20 25 4
gpt4 key购买 nike

只是一个简单的 MVC 演示。

  1. 在Service类中,有一个

    JDBCutil db=new JDBCutil();
    db.beginTransation();
    UserinfoDao dao=new UserinfoDao();
  2. 在UserinfoDao类中,还有一个

    JDBCutil db=new JDBCutil();

我以为有两个new JDBCutil,但实际上只存在一个连接。

为什么?因为 db.beginTransation();?为什么?

很抱歉,这是我的错,没有发布 JDBCutil(感谢提及评论),它可能是“静态连接”(看起来像单例)一个连接,尽管有两个新的连接。代码是

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;
}

最佳答案

您将获得一个新的 JDBCutil 实例,但这不是实际的 JDBC Connection。它可能会用每用户实例类包装单例连接。没有代码,我们无法判断。

此外,由于您两次看到 new 一词,因此 JDBCutil 实例并不相同,但这并不意味着它们不使用相同的 JDBC Connection

很可能 db.beginTransaction() 内部调用代码会映射回同一连接。如果不是这样,我想你会遇到更大的问题。

关于java - 为什么service和dao的JDBC连接是一样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50721808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com