2016-12-31 4 views
1

Я создаю успокоительный api в java EE.Сохранение данных в базе данных с помощью hibernate и commit()

Я определил

private static Session session = NewHibernateUtil.getSessionFactory().getCurrentSession(); 
private static org.hibernate.Transaction tx = session.beginTransaction(); 

в классе и в методе я звоню

Person n = new Person(getPersonId() , name); 
      session.save(n); 
      tx.commit(); 

однако совершить() закрывает сделку, и без фиксации данных обыкновение быть сохранены в базе данных. Каков оптимальный способ сохранения данных в базе данных без использования фиксации? Это приводит к созданию новой транзакции при каждом запросе, который медленный.

+0

* Это приводит к созданию новой транзакции по каждому запросу, который медленный *: нет, это не медленно. Вытащите это из головы. –

+0

Кроме того, если вы используете контейнер Java EE, вы должны использовать JPA и декларативную обработку транзакций. Запуск и совершение транзакций в спящем режиме - это одна из ключевых вещей, которые позволяет избежать Java EE. –

ответ

0

Не пытайтесь использовать транзакцию и совершить. Используйте флеш после сохранения.

+0

Вы можете разработать? – Dingo

+0

session.save (n); session.flush(); это не приведет к созданию транзакции sql, но должно вставить n регистра. – user7358693