Spring BootでEntityManager.createQueryやcreateNativeQueryでデータベースアクセスする方法

Spring BootでEntityManager.createQueryやcreateNativeQueryでデータベースアクセスする方法

Spring Bootで@Repositoryアノテーションを付与したインタフェースで@Queryアノテーションを付与したメソッドはEntityManagerを意識する必要がありません。

EntityManagerを使用する場合は@PersistenceContextアノテーション(javax.persistence.PersistenceContext)を付与してEntityManagerをDIします。

unitName属性はデフォルトはdefaultですが、こちらは省略可能です。複数データベース接続する場合は、unitNameを指定する必要があります。

アクセスするデータベースが1つの場合は以下のようにDIしてあげればEntityManagerクラスを使用することが出来ます。


@PersistenceContext(unitName = "default") // @PersistenceContext() と同じ
private EntityManager entityManager;
@RequestMapping(path = "/test", method = RequestMethod.GET)
public ResponseEntity<?> test() {
var ret =
entityManager.createNativeQuery("select * from t_employee", Employee.class).getResultList();
return ResponseEntity.ok(Map.of("result", ret));
}
// windows
// curl -X GET http://localhost:8080/test
view raw

Sample.java

hosted with ❤ by GitHub

createNativeQuery

EntityManagerクラスのcreateNativeQueryを使えば引数にSQL文を記述することが出来ます。

createQuery

EntityManagerクラスのcreateQueryを使えば引数にJPQL文を記述することが出来ます。


@PersistenceContext()
private EntityManager entityManager;
@RequestMapping(path = "/test", method = RequestMethod.GET)
public ResponseEntity<?> test() {
var ret = entityManager.createQuery("from Employee", Employee.class).getResultList();
return ResponseEntity.ok(Map.of("result", ret));
}
// windows
// curl -X GET http://localhost:8080/test
view raw

Sample.java

hosted with ❤ by GitHub

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました