Javaプログラミング
Hibernateの設定が終わったら、
- EntityBeanクラス
- HibernateUtilクラス
2つが出来上がったと思います(EntityBeanのクラスは、データベースで利用するテーブルの数だけ出来上がっていると思います)。Hibernateのプログラムでは、基本的にこのクラスを利用してプログラムを作成します。
注意事項
EntityBeanクラスは原則としてさわらないでください。このクラスファイルは、データベースとのやり取りを仲介するデータクラスですので、削除や追記などはしないでください。
では、書いていきましょう。下記はHibernateプログラムの基本的な処理の例です。下記の記述は、Hibernateを呼び出すプログラムに記述しますが、データベース操作に関する処理は、~DAOクラス(DAO:Data Access Object)と言う名前にしてまとめておくと便利です。
初期設定は、アノテーションを利用するかしないかによって若干異なります。
初期設定(アノテーションを利用した場合)推奨
下記の例では、Netbeansが作成するHibenateUtilクラスを利用して、SessionFactoryを生成しています。
SessionFactory sessionFactory = NewHibernateUtil.getSessionFactory();
// セッションオープン
Session session = sessionFactory.openSession();
初期設定(アノテーションを利用しない場合)
Configuration config = new Configuration();
config = config.configure(); // 設定の読み込み
// セッションファクトリーの作成
SessionFactory sessionfactory = config.buildSessionFactory();
// セッションオープン
Session session = sessionfactory.openSession();
以上の方法で、データベースへの接続(session)が確保されましたので、そのsessionを使って以下のように操作をおこなっていきます。
検索(全検索)
Transaction tx = session.beginTransaction();
List list = session.createCriteria(Table1.class).list();
System.out.println("DataNum="+list.size());
for (int i = 0; i < list.size(); i++) {
// レコードとなるオブジェクトを取得
Table1 t1 = (Table1) list.get(i);
System.out.println(t1.getId() + ":" + t1.getName());
}
tx.commit();
条件検索(HQLを利用)
上記までの方法では,SQLなどを一切書かずにbeanクラスへの操作でデータベースにアクセスすることができました.しかし,検索時には柔軟性に かけます.そこで,HibernateではSQLに対応する検索言語としてHQLを用意しています.HQLはSQLと文法的に同じです.HQLを利用する にはfindメソッドかcreateQueryメソッドを使います.最新のバージョンではcreateQueryメソッドを奨励です.
Query query = session.createQuery ("FROM User user WHERE user.name= ?");
List list = query.setString(0, name).list();
データの追加
// トランザクションの開始
Transaction trans = session.beginTransaction();
// 新しいレコードの作成
student temp = new student();
temp.setId(new Integer(6));
temp.setName("Takahashi");
session.save(emp); // 挿入実行
trans.commit();
データの削除
// トランザクションの開始
Transaction trans = session.beginTransaction();
// id「1」を持つstudentオブジェクトを取得
student temp = (student)session.load(student.class, new Integer(1));
// JOBを「Sales」に変更 ⇒ 修正
temp.setJob("Sales");
session.update(temp); // UPDATE実行
trans.commit(); // コミット
データの更新
Transaction trans = session.beginTransaction();
//セッションより、主キーが6であるデータを取り出しています。
student temp = (student)session.get(student.class, new Integer(6));
if(temp!= null){
// データが存在していれば削除。
session.delete(temp);
}
trans.commit();
参考サイト
- Hibernate入門(by Syboos) ・・・ 内容が充実してます