2014-01-17 4 views
0

! [여기에 이미지 설명을 입력하십시오] [1] SessionFactory sessionFactory = new Configuration(). configure(). buildSessionFactory(); 세션 세션 = sessionFactory.openSession(); session.beginTransaction(); session.save (학생); 난 당신이 Transaction 개체가 필요합니다 내가이아니요 session.getTransaction 메서드가 없습니다

답변

1

트랜잭션을 커밋하기 바로 잡기 않는 transaction.how를 저지 할 수 있도록 세션이 getTransaction 메소드를 호출을 시도하는 동안이 오류가 code error screenshot

을에 Session.get하는 session.beginTransaction();에 의해 반환됩니다. 다음과 같이

은 코드를 변경

:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); 
Transaction tx = session.beginTransaction(); //org.hibernate.Transaction 
session.save(student); 
tx.commit(); 

업데이트를

그것은 좋은 방법이 적절한 try-catch 블록을 사용하는 것입니다 : 각 호출에`buildSessionFactory`를 호출

public boolean saveStudent(Student student) 
    { 
    Session session=null; 
    Transaction tx=null; 
    SessionFactory sessionFactory = null; 
     try 
    { 
     sessionFactory = new Configuration().configure().buildSessionFactory(); 
     session = sessionFactory.openSession(); 
     tx = session.beginTransaction(); 
     session.save(student); 
     tx.commit(); 
     return true; 
     } 
     catch (Exception e) 
    { 
     if(tx!=null && tx.isActive()) 
     { 
      tx.rollback();//rolebacks the currect active transaction 
     } 
     return false; 
     } 
    finally 
    { 
     if(session!=null && session.isOpen()) 
     { 
      session.close(); 
     } 
     if(tx!=null) 
     { 
      tx=null; 
     } 
     } 
     } 
+0

도하지 좋은 연습. 당신은'HibernateHelper'라는 이름의 또 다른 클래스를 만들어서 Hibern 메소드를 호출하여'session'을 얻을 곳을 만들어야합니다. ateHelper.getsession()'이 HibernateHelper는 연결 풀링, 세션 팩토리 생성 등을 할 수있는 코드를 가지고 있습니다. – Amogh

+0

고마워요! 그것은 내 문제를 도와 줬어. – user1654352

관련 문제