Пример использования нескольких транзакций с одним сеансом - PullRequest
0 голосов
/ 28 февраля 2019

Я довольно новичок в Hibernate.Я пытаюсь понять сеансы и транзакции, используя пример ниже.У меня есть система управления событиями.У меня есть объект с именем Event, и пользователь может редактировать событие.Должен ли я сохранить сеанс как переменную экземпляра в классе обслуживания и использовать его для выполнения нескольких транзакций в разных методах?Я также хотел бы использовать его в качестве кэша.Где должен храниться объект сеанса?Или как лучше всего добиться того, что я пытаюсь сделать ниже - у меня есть две транзакции - первая будет извлечена как объект события, а вторая должна отредактировать его и сохранить в базе данных.

 ServiceClass {

     Session session ;

     Constructor () { 
         session = sessionFactory.getSession();
     }


     //First transaction

     public Event getEvent() {

        begin new Transaction on session.
           Fetch new Event object 
        End new transacton

        return event; //to display to user
     }

     //Second transaction 

     public void editEvent(String newName, Date newDate) { 

         begin Transaction
           Obtain the Event object from the session which was result of First transaction above
           event.setName(newName);   //This should be in persistent state and affect the database
           event.setDate(newDate);     
         end Transaction
      }


 } 

Большое спасибозаранее:)

1 Ответ

0 голосов
/ 28 февраля 2019

Вам необходимо считать сеанс транзакцией.Если ваш ServiceClass используется в многопоточной среде (например, сервлетах), то указание его в поле вызовет проблемы с многопоточностью.Чтобы избежать этой проблемы, поместите создание сеанса в метод editEvent (), который должен:

  1. Создать сеанс
  2. Начать транзакцию
  3. Получить объекты из базы данных черезсеанс
  4. Внести изменения в сущности
  5. Подтвердить транзакцию
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...