Я использую spring и hibernate в нашем веб-приложении, и у нас есть проблема с несколькими строками, вставленными всего за одно исполнение. В нашем коде нет цикла для вставки трех строк в один пользовательский запрос. Мне просто интересно, может ли это (спящий режим обнаруживает грязный объект).
Пожалуйста помоги...
Благодаря,
Когда сеанс открыт и объект просто сохраняется или извлекается из базы данных. Это состояние называется постоянным. Во время этого состояния Hibernate управляет объектом и сохраняет ваши изменения, если вы их совершаете. Ниже вы можете увидеть пример. Автомобиль будет сохранен и имя будет изменено впоследствии. Когда автомобиль находится в постоянном состоянии, новое имя будет сохранено.
Session session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
session.save(car);
car.setName("Peugeot");
tx.commit();
Следующий код загружает автомобиль по id и изменяет имя. В сеансе не участвует session.update. Каждый объект, загруженный session.get, session.load или запросом, находится в постоянном состоянии. Он сохраняется в контексте сохранения сеанса. Когда
tx.commit()
, Hibernatetx.commit()
контекст персистентности и все еще не написанные инструкции вставки, обновления и удаления выполняются.
Убедитесь, что вы не изменяете объект (отношения) после операции сохранения и до совершения транзакции.