почему соединение JDBC службы и дао одинаковы? - PullRequest
0 голосов
/ 06 июня 2018

Просто простая демонстрация MVC.

  1. В классе Service есть

    JDBCutil db=new JDBCutil();
    db.beginTransation();
    UserinfoDao dao=new UserinfoDao();
    
  2. В классе UserinfoDao,есть также

    JDBCutil db=new JDBCutil();
    

Я думал, что есть два new JDBCutil, но на самом деле существует только одно соединение.

Почему?Из-за db.beginTransation();?и почему?

Я сожалею, что я виноват в том, что не публикую JDBCutil (спасибо за упоминание комментария), это может быть "статическое соединение" (похоже на Singleton) одно соединение, хотя два новых .the кодаэто

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

1 Ответ

0 голосов
/ 06 июня 2018

Вы получаете новый экземпляр JDBCutil, но это не настоящий JDBC Connection.Это может обернуть одноэлементное соединение с классом экземпляра для каждого пользователя.Без кода мы не можем сказать.

Кроме того, поскольку вы видите слово new дважды, экземпляры JDBCutil не совпадают, но, опять же, это не означает, что они не обаиспользуя тот же JDBC Connection.

Шансы - это внутренний код вызова db.beginTransaction(), который сопоставляется с тем же соединением.Если бы этого не произошло, я бы подумал, что у тебя будут еще большие проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...