Hibernate 코드 최적화

Hibernate 를 사용 할 때 다음 과 같은 동작 이 필요 합 니 다.
 
1.Hibernate 설정 알 기    Configuration config = new Configuration().configure() ;
 
2.설정 에서 Session Factory 가 져 오기    SessionFactory factory = config.buildSessionFactory() ;
 
3.Session Factory 에서 session 얻 기    this.session = factory.openSession() ;
 
 
    일반적으로 Hibernate 를 호출 하려 면 이러한 절차 가 필요 합 니 다.호출 할 때마다 이 코드 를 실행 해 야 한다 면 효율 을 떨 어 뜨 릴 수 있 습 니 다.따라서 일반적인 상황 에서 Hibernate 의 초기 화 작업 을 추출 하여 하나의 도구 류 를 만 듭 니 다.
 
    코드 는 다음 과 같 습 니 다:
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public final class HibernateUtil {
       
      private static SessionFactory sessionFactory;

      private HibernateUtil () {

      }
      
      static {
            
            Configuration cfg = new Configuration ();
            cfg.configure ();      //           hibernate.cfg.xml,         ,           
            sessionFactory = cfg.buildSessionFactory ();
      }

      public static SessionFactory getSesstionFactory () {

             return sessionFactory;
      }

      public static Session getSesstion () {
      
             return sesstionFactory.openSesssion ();
      }

}

 
어떻게 호출 합 니까?
public static void main (String [] args) {
  
       Session s = HibernateUtil.getSession ();
       
       //     
    Transaction tx = s.beginTransaction ();
      ......
      tx.commit ();
      s.close ();
}

위의 코드 는 아직도 규범 에 맞지 않 아서 다음 과 같이 최적화 되 었 다.
......

Session s = null;
Transaction tx = null;

try {

     s = HibernateUtil.getSession ();
     tx = s.beginTransaction();
     ....
     tx.commit ();

} catch (HibernateException e) {         // catch     

     if (tx != null) {
           
           tx.rollback ();
     }
     throw e;

} finally {

     if (s != null) {
        
         s.close ();
     }
}
......

 
 

좋은 웹페이지 즐겨찾기