Hibernate

■ダウンロード

 http://hibernate.org/orm/

 5.2.2


 ・Struts2に関連するJARファイルをWEB-INF/libにコピーする。

  lib/requiredフォルダの内、jboss以外をコピーする。

  hibernate-core-5.2.2.Final.jar


 ・プロジェクト右クリック-[プロパティ]

  → [Javaのビルド・パス]

    [ライブラリー]タブの[Jar追加...]クリック

    → [WEB-INF/src]へコピーしたjarファイルを選択する。

    → OK


■アノテーション

・クラスが永続化可能であることを明示する

  @javax.persistence.Entity

・クラスが対応しているテーブルを明示する

  @javax.persistence.Table(name=(テーブル名))

・メンバがIDであることを明示する

  @javax.persistence.Id

・メンバが対応しているカラムを明示する

  @javax.persistence.Column(name=(テーブル名))


■設定ファイル persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

 <persistence-unit name="sample" transaction-type="RESOURCE_LOCAL">

  <provider>

   org.hibernate.ejb.HibernatePersistence

  </provider>

  <class>

   [db-name].sample.User

  </class>

  <properties>

   <property name="hibernate.connection.username" value="[user-name]"/>

   <property name="hibernate.connection.password" value="[password]"/>

   <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>

   <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/[db-name]"/>

   <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

  </properties>

 </persistence-unit>

</persistence>


■EntityManager取得

protected EntityManager getEntityManager() {

 if (_entityManager == null) {

  EntityManagerFactory factory = Persistence.createEntityManagerFactory("sample"); // persistence.xmlに指定した設定名

  _entityManager = factory.createEntityManager();

 }

 return _entityManager;

}


■データ取得

protected User queryUser(String userID) {

 EntityManager entityManager = getEntityManager();

 Query query = entityManager.createQuery("SELECT u FROM User u WHERE u.id='" + userID + "'");

 List users = query.getResultList();

 if(users.size() == 0) {

  return null;

 }

 return (User) users.get(0);

}