Hibernate の開発手順
2008/11/09 23:52Update
Hibernate の開発手順について学びます。
Hibernate のインストール方法について、次の記事をご参照ください。
Hibernate のインストール 
1.1 JDBCドライバーをプロジェクトのclasspathに通す
※利用するデータベースのJDBCドライバーは各ベンダーなどから提供されるか、ベンダーのホームページからダウンロードできます。
1.2 DBスキーマを作成
設定ファイルの詳細について、次の記事をご参照ください。
→Hibernate設定ファイルその1 - hibernate.cfg.xml
例えば、次のようなhibernate.cfg.xmlを作成とします。
例えば、テーブルTABLE_NAME_01があるとします、次のEntityファイルを新規作成します。
TableName01.java
※TableName01は普通のJavaクラスとの定義方法はほぼ一緒ですが、toString、equals、hashCodeメソッドを実装する必要があります。
そして、テーブルTABLE_NAME_01とTableName01をマッピングするための設定ファイルを新規作成します。
TableName01.hbm.xml
TABLE_NAME_01を操作するためのDAOファイルを作成します。
※DAOの必要性について、次の記事をご参照ください
→ コアJ2EEパターン - Data Access Objectパターン
また、比較的に汎用的なDAOパターンを実装するには、共通で使用する機能を親クラスに、もしくはユーティリティクラスに抽象する手法が薦められています。
ここでは、その共通する機能の抽象クラスの実装を省きます。
TableName01Dao.java
Main.java
※Hibernate のSessionとSessionFactory
Hibernate のインストール 
1、利用するデータベースを決める(利用するデータベースを後から変更可能)
1.1 JDBCドライバーをプロジェクトのclasspathに通す
※利用するデータベースのJDBCドライバーは各ベンダーなどから提供されるか、ベンダーのホームページからダウンロードできます。
1.2 DBスキーマを作成
2、hibernate.cfg.xml やhibernate.propertiesなどの設定ファイルを新規作成
設定ファイルの詳細について、次の記事をご参照ください。
→Hibernate設定ファイルその1 - hibernate.cfg.xml

例えば、次のようなhibernate.cfg.xmlを作成とします。
<?xml version="1.0"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- セッション・ファクトリ定義 --> <session-factory> <!-- データベースの接続・設定(MySQLを利用する場合) --> <!-- JDBCドライバー(ここではMySQLのcom.mysql.jdbc.Driverを用いる) --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- DB接続URL(適当修正してください) --> <property name="connection.url">jdbc:mysql://localhost/myproj</property> <property name="connection.username">myproj</property> <property name="connection.password">myproj</property> <!-- HibernateのDialect(方言)設定(ここではMySQLのDialectを用いる) --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- マッピングファイル&クエリの定義ファイル --> <mapping resource="TableName01.hbm.xml"/> </session-factory> </hibernate-configuration>
3、テーブルごとのHibernate Entityファイルを新規作成
例えば、テーブルTABLE_NAME_01があるとします、次のEntityファイルを新規作成します。
TableName01.javapackage mypackage;
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
//テーブル:TABLE_NAME_01
public class TableName01 implements Serializable {
//フィールド:TABLE_NAME_01.ID
private String id;
//フィールド:TABLE_NAME_01.NAME
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* to string
*/
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
/**
* if equals or not
* @param other Object
* @return true/false
*/
public boolean equals(Object other) {
if ( (this == other ) ) return true;
if ( !(other instanceof TableName01) ) return false;
TableName01 castOther = (TableName01) other;
return new EqualsBuilder()
.append(this.getId(), castOther.getId())
.isEquals();
}
/**
*
* @return hash code
*/
public int hashCode() {
return new HashCodeBuilder()
.append(getId())
.toHashCode();
}
}
※TableName01は普通のJavaクラスとの定義方法はほぼ一緒ですが、toString、equals、hashCodeメソッドを実装する必要があります。
4、テーブルごとのHibernate hbmマッピング設定ファイルを新規作成
そして、テーブルTABLE_NAME_01とTableName01をマッピングするための設定ファイルを新規作成します。
TableName01.hbm.xml<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> <class name="mypackage.TableName01" table="TABLE_NAME_01" lazy="false" > <id name="id" type="java.lang.String" column="ID" length="32" > <generator class="uuid.hex" /> </id> <property name="name" type="java.lang.String" column="NAME" not-null="true" length="100" /> </class> </hibernate-mapping>
5、テーブルごとのDAOファイルを新規作成
TABLE_NAME_01を操作するためのDAOファイルを作成します。
※DAOの必要性について、次の記事をご参照ください
→ コアJ2EEパターン - Data Access Objectパターン

また、比較的に汎用的なDAOパターンを実装するには、共通で使用する機能を親クラスに、もしくはユーティリティクラスに抽象する手法が薦められています。
ここでは、その共通する機能の抽象クラスの実装を省きます。
TableName01Dao.javapackage mydaopackage;
import mypackage.TableName01;
public class TableName01Dao extends CommonDao {
//IDによるデータの取得
public TableName01 getTableName01(java.lang.String id) {
return (TableName01)super.get(TableName01.class, id);
}
//データの全件取得
public List<TableName01> getAllTableName01() {
return super.getAll(TableName01.class);
}
//データの更新
public void updateTableName01(TableName01 entity) {
super.update(entity);
}
//データの保存
public void saveTableName01(TableName01 entity) {
super.save(entity);
}
//データの削除
public void deleteTableName01(TableName01 entity) {
super.delete(entity);
}
}
6、Hibernateを利用するビジネスクラスの作成
Main.javapackage mypackage;
import mypackage.TableName01;
import mydaopackage.TableName01Dao;
public class Main {
public static void main(String[] args) {
TableName01Dao dao = new TableName01Dao();
TableName01 entity = new TableName01();
entity.setName("Some Name");
try {
//保存
dao.beginTransaction();
dao.saveTableName01(entity);
dao.commitTransaction();
//更新
dao.beginTransaction();
entity.setName("New Name");
dao.updateTableName01(entity);
dao.commitTransaction();
} catch (Exception e) {
dao.rollbackTransaction();
}
}
}
参考資料
※Hibernate のSessionとSessionFactory

Sponsored Link
- Relative Articles
- Hibernate設定ファイルその1 - hibernate.cfg.xml - (2008/07/09 14:08)
- Hibernate c3p0 - よく利用されているコネクションプーリング - (2008/07/09 15:00)
- Hibernate 方言(Dialect)一覧 - (2008/07/09 15:10)
- Hibernate のSessionとSessionFactory - (2008/07/09 15:51)
- ThreadLocal でHibernate Session を効率的に管理する - (2008/07/09 18:43)
- Hibernateで複数のDBに接続するには? - (2008/07/09 18:47)
- Hibernateとは - (2008/07/11 14:23)
- Hibernate のインストール - (2008/07/24 11:01)
- Hibernate SQLをログに出力方法 - (2008/07/30 16:06)
- Hibernate究明 - サンプルから学ぶHibernate Proxy - (2008/07/30 19:07)