Spring JPA - modyfikacja zapisanego obiektu

0

Cześć
Zastanawia mnie czy sytuacja w której następuje zapisanie obiektu do bazy danych, a następnie zmodyfikuje się obiekt spowoduje zapisanie zmiany do bazy (nie mogę teraz sprawdzić tego żywo, a mnie to intryguje)? Coś w stylu poniższego:

public void savePerson(){
Person p = new Person();
p.setName("Jan");
p.setAge(44);
personRepository.save(p);
p.setName("Aldona"); // co się wtedy wydarzy?
}
0

Jeśli jest @transactional to tak... (no chyba że to tylko readOnly :D )

0

Jeśli masz tą metodę oznaczoną adnotacją @Transactional ( pamiętaj, żeby była publiczna ) to ten personRepository.save(p) nie jest potrzebny. Jeśli nie masz to p.setName("Aldona") do bazy nie dotrze.

4

Jeszcze tylko trzeba pamiętać, że ten @Transactional to musi być na publicznej metodzie.
A obiekt (this) musi być beanem zainstancjonowanym przez Spinga. (nie przez new)
No i savePerson nie może być wywołane z tego samego beana (this.savePerson) - chyba, że używasz aspectJ wtedy może.
No i @Transactional musi być ze springa. Ten z CDI (inny pakiet) zadziała tylko o ile nie zapomnisz dodać jara z CDI do projektu.
No i musi to byc wywołane z wątku zarządzanego przez Spring (czyli żadne własne executory, new Thread() , parallelStream itp.).

Proste. Powodzenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1