2012-06-23 6 views
2

Я изучаю Спящий режим с начала. Я загрузил спящую демо-версию от RoseIndia. Настройка конфигурации hibernate.cfg.xml для конкретной базы данных. И пробежал ниже кода. Таблицы, указанные выше, «контакт» создается автоматически, но ниже код не может сохранить новую запись. Есть ли что-то неправильно в нижнем коде?Hibernate не сохраняет данные

package roseindia.tutorial.hibernate; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 


/** 
* @author Deepak Kumar 
* 
* http://www.roseindia.net 
* Hibernate example to inset data into Contact table 
*/ 
public class FirstExample { 
    public static void main(String[] args) { 
     Session session = null; 

     try{ 
      // This step will read hibernate.cfg.xml and prepare hibernate for use 
      SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
      session =sessionFactory.openSession(); 
       //Create new instance of Contact and set values in it by reading them from form object 
       System.out.println("Inserting Record"); 
       Contact contact = new Contact(); 
       //contact.setId(6); 
       contact.setFirstName("Deepak"); 
       contact.setLastName("Kumar"); 
       contact.setEmail("[email protected]"); 
       System.out.println("Before Save"); 
       session.save(contact); 
       System.out.println("After Save"); 
       System.out.println("Done"); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
     }finally{ 
      // Actual contact insertion will happen at this step 
      session.flush(); 
      session.close(); 

      } 

    } 
} 

Моя Out положить как ниже

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). 
log4j:WARN Please initialize the log4j system properly. 
Inserting Record 
Before Save 
After Save 
Done 
Hibernate: insert into CONTACT (FIRSTNAME, LASTNAME, EMAIL, ID) values (?, ?, ?, ?) 
+0

Так было исключение, или же распечатать «После Сохранить"? –

+0

Он печатает «После сохранения» ... Без исключений ... Позвольте мне поставить вывод ... – Ketan

+0

Результат добавлен к вопросу ... Кстати спасибо за ответ Jon ... – Ketan

ответ

7

Вы должны обернуть свой код в сделке:

session = sessionFactory.openSession(); 
Transaction transaction = session.beginTransaction(); 
// your code 
transaction.commit(); 
+0

Я сделал, и это сработало хорошо ..... Хорошо, поэтому по умолчанию это не автокоммит ... правильно? – Ketan

+0

По умолчанию Hibernate устанавливает autoocommit в false. Однако вызов, такой как session.close(), может совершить незафиксированную транзакцию, это будет зависеть от используемого вами драйвера JDBC. – JamesB

Смежные вопросы