Używam Hibernuj 4.1.7 i próbuję zaktualizować obiekt, ale nie ma dokumentacji, jak to zrobić. Obecnie robię tak:Aktualizacja hibernacji za pomocą EntityManager
Person person = personDao.getPersonById(1);
person.setAge(23);
person.setLastname("McName");
person = personDao.update(person);
W aktualizacji PersonDao wygląda następująco:
public Person update(Person person) {
return entityManager.merge(person);
}
W PersonDao getPersonById jest:
public Person getPersonById(int id) {
personQuery = entityManager.createNamedQuery("Person.findPerson", Person.class);
personQuery.setParameter("id", id);
return personQuery.getSingleResult();
}
Mam także zdefiniowane nazwane zapytania wewnątrz klasy Person i jest tutaj:
@NamedQuery(name="Person.findPerson", query="SELECT p FROM Person p WHERE p.id = :id")
Korzystając z tego, że moja osoba nie będzie aktualizowana, jak powinienem zaimplementować aktualizację za pomocą hibernacji?
Powyższy kod jest OK, z wyjątkiem, że wywołanie 'personDao.update()' jest zupełnie niepotrzebne, czy wszystko jest prowadzony w ramach jednej transakcji: stan jednostki jest automatycznie wykonany trwały przez JPA/Hibernate w koniec transakcji. Metodę getPersonById można również zredukować do 'em.find (Person.class, id)', co byłoby prostsze i bardziej wydajne, ponieważ nie wykonałoby żadnego zapytania, gdyby jednostka była już wczytana. –
Dodatek: jest to zdecydowanie wyjaśnione w dokumentacji. Zobacz http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e772 –