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

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA