Как использовать JDBC в JavaEE? - PullRequest
2 голосов
/ 19 марта 2012

Я занимаюсь разработкой в ​​среде JavaEE (weblogic 12), и часть моего кода использует JDBC;Поэтому мне нужно получить соединение JDBC с сервера приложений.
Я знаю, что использовать JDBC в JavaEE - это очень плохая практика, но я не могу изменить этот код (устаревший).

нашел способ сделать это, но я не уверен, что это правильный путь:

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

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

Вопрос в том, что мне делать с соединением в конце?
Я не могу на самом деле зафиксировать/ Откат это, потому что я использую распределенную транзакцию.Но должен ли я хотя бы закрыть его?
И будет ли транзакция JTA всегда влиять на соединение (при коммите / откате)?

Или, может быть, есть другой лучший способ использовать JDBC в JavaEE?(нет, собственные запросы EntityManager не будут выполняться)

Ответы [ 2 ]

5 голосов
/ 19 марта 2012

Почему использование JDBC должно быть плохой практикой ?

Если ваш сервер приложений поддерживает JDBC, и вы позволяете ему подключаться к БД через JDBC I, я сам не вижу причин, по которым вам не следует использовать его и в своем приложении!?

Другим подходом было бы загрузить драйвер вручную в ваше приложение и получить от него соединение. Но это все равно, что изобретать велосипед!

Также вы отклоняете преимущество

  • управление на стороне сервера вашего пула соединений JDBC
  • возможность многократного использования этого соединения

В конце вы всегда должны закрывать Connection / Statement / ResultSet вроде:

try {
  // your stuff here
}
finally {
  if(connection != null) {
    connection.close();
  }
  // same for statement/ResultSet ift not used anymore
}
0 голосов
/ 19 марта 2012

закрыть соединение - conn.close ();

...