• 1000 Я могу:
val session = HibernateUtil.getSessionFactory().getCurrentSession()
session.beginTransaction()
val coordinates = session.find(Coordinates::class.java, "12345")
coordinates.longitude = 0.0
session.save(coordinates)
session.getTransaction().commit()
При использовании Entitymanager это делается следующим образом:
val em = emFactory.createEntityManager()
em.transaction.begin()
val coordinates = em.find(Coordinates::class.java, "12345")
coordinates.longitude = 0.0
em.transaction.commit()
Основное отличие здесь в том, что при использовании EntityManager мне не нужно явно делать вызов в функцию save
для фактического обновления объекта, который в конечном итоге будет сброшен во время фиксации. Конечно, я мог бы сделать что-то вроде
if(obj.id == null) {
return em.merge()
} else {
val saved = em.persist(obj)
return saved
}
Но какой смысл для уже существующих объектов, если они все равно сохраняются, независимо от того, назову я это или нет?
Удивительно, но примеры , найденные здесь, похоже, также полагаются на метод сохранения.
Мой вопрос: есть ли способ настроить EntityManager для обновления объектов только по запросу (т.е. имитировать поведение сеанса) ? Или мне нужно использовать сеанс для этого?