2015-01-20 3 views
0

Java, Hibernate 및 SQL Server로 응용 프로그램을 만들고 있습니다. 세션 및 세션 팩토리에 대한 객체 선언과 관련하여 의심의 여지가 있습니다. 처음에는 응용 프로그램을 만들 때 필요할 때마다 세션 및 세션 팩토리를 만드는 데 사용되었습니다. 하지만 이제는 세션과 팩토리를 만들 때 응용 프로그램이 느려져서 로그인 페이지에 필요한 세션과 세션 팩토리를 모두 만들고 공용 정적으로 수정자를 지정했습니다.최대 절전 모드 세션 및 세션 팩터

public static Session session = null; 
    public static SessionFactory sessionfactory = new org.hibernate.cfg.Configuration().configure().buildSessionFactory(); 
    public static Session session1 = null; 
    public static SessionFactory sessionfactory1 = new org.hibernate.cfg.Configuration().configure().buildSessionFactory(); 
    public static Session session2 = null; 
    public static SessionFactory sessionfactory2 = new org.hibernate.cfg.Configuration().configure().buildSessionFactory(); 

는 지금은 세션과 세션 공장 내가 Login.session (loginpagefilename.sessionobject)로 세션을 호출하는 데 사용을해야 할 때마다.

Login.session = Login.sessionfactory.openSession(); 
     Login.session.beginTransaction(); 
     String hql = "FROM TEST_SERVICES_POJO lts WHERE NOT EXISTS (SELECT lsm.inttestid FROM PARAMETER_MAPPING_POJO lsm WHERE lsm.status = 1 and lsm.inttestid=lts.inttestid)"; 
     org.hibernate.Query query = Login.session.createQuery(hql); 
     DefaultTableModel model = (DefaultTableModel) testtable.getModel(); 
     model.setRowCount(0); 
     for (Iterator it = query.iterate(); it.hasNext();) { 
      TEST_SERVICES_POJO slp = (TEST_SERVICES_POJO) it.next(); 
      Object[] row = {slp.getTestname()}; 
      model.addRow(row); 
     } 
     Login.session.getTransaction().commit(); 

여기서 처음에는 최대 절전 모드의 롤백 기능을 사용하지 않았습니다. 하지만 이제 최대 절전 모드의 롤백 기능을 구현하고 싶습니다. 따라서 어떤 방법을 쓰면 성능이 향상 될지 알 수 있습니다. 친절하게 나에게 길을 제안 해주세요. 미리 감사드립니다.

답변

1

가장 중요한 점은 하나 이상의 응용 프로그램마다 하나 이상의 응용 프로그램을 만들 수 없다는 것입니다 (하나 이상의 지속성 컨텍스트가없는 경우 응용 프로그램 및 지속성 컨텍스트 당 하나 생성). SessionFactories을 생성하면 성능이 저하되고 앱 서버가 종료됩니다 (OutOfMemoryError). 응용 프로그램을 시작할 때 SessionFactory을 만들고 액세스 할 수있는 곳에 보관하십시오. jndi에 저장하고 전역 클래스 또는 이와 유사한 것으로 유지하십시오.

필요에 따라 Session을 생성하십시오. 가장 좋은 일치는 종종 트랜잭션 당 하나의 Session이므로 최대 절전 모드는 캐싱 메커니즘을 활용할 수 있습니다.

관련 문제