この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
更新日時:2019-02-14 09:40:56
タイトル: JPAにおけるjava.sql.Connectionの取得方法
SEOタイトル: 【Spring】JPAにおけるjava.sql.Connectionの取得方法
| この記事の要点 |
- JPA から素の
java.sql.Connection を取得する方法
EntityManager.unwrap(SessionImpl.class).getJdbcConnectionAccess().obtainConnection() 等で取得
- Hibernate なら
Session.doWork(connection -> { ... }) が安全
- JPA の管理外で SQL を直接実行したいときに使う(StoredProcedure 等)
|
|
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.hibernate.Session;
import org.hibernate.jdbc.Work;
...
@Autowired
private EntityManagerFactory factory;
public Connection getConnection() {
EntityManager entityManager = factory.createEntityManager();
entityManager.getTransaction().begin();
Session hibernateSession = entityManager.unwrap(Session.class);
ConnectionWork work = new ConnectionWork();
hibernateSession.doWork(work);
Connection conn = work.getConnection();
return conn;
}
private static class ConnectionWork implements Work {
Connection conn;
@Override
public void execute(Connection conn) throws SQLException {
this.conn = conn;
}
Connection getConnection() {
return conn;
}
}
|