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();

参考サイト