Learning Hibernate step by step--03 HibernateUtilヘルプクラス
SessionFactoryは、データベースの永続化操作を処理し、単一スレッド環境で使用するSessionインスタンスを取得するために使用されています.SessionFactoryはスレッドが安全なグローバルオブジェクトであり、一度だけ初期化されるべきです.SessionFactoryを使いやすく、一度だけ作成するために、ヘルプクラスHibernateUtilを作成しました.JAvaはSessionFactoryの初期化を維持します.コードは次のとおりです.
また、プログラム開発では、トランザクションをできるだけ次の形式で使用し、Sessionが例外を投げ出した後、トランザクションはロールバックし、Sessionオブジェクトを破棄することで、例外が発生した後もSessionの内部状態がデータベースと一致することを保証します.
また、ネット上には強力なHibernateUtilヘルプクラスがあり、以下のように自分のプロジェクトに参加することができます.
http://beckham-xiao.iteye.com/blog/355478
http://www.koders.com/java/fid07F9A88EDEDAEDAABC6C0535D5CC07C9BB39B43F.aspx
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private HibernateUtil() {}
private static SessionFactory buildSessionFactory() {
try {
// hibernate.cfg.xml SessionFactory
return new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
//
System.err.println(" SessionFactory ." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
また、プログラム開発では、トランザクションをできるだけ次の形式で使用し、Sessionが例外を投げ出した後、トランザクションはロールバックし、Sessionオブジェクトを破棄することで、例外が発生した後もSessionの内部状態がデータベースと一致することを保証します.
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
// do something
// ...
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
また、ネット上には強力なHibernateUtilヘルプクラスがあり、以下のように自分のプロジェクトに参加することができます.
http://beckham-xiao.iteye.com/blog/355478
http://www.koders.com/java/fid07F9A88EDEDAEDAABC6C0535D5CC07C9BB39B43F.aspx