Spring JPA - modyfikacja zapisanego obiektu

Spring JPA - modyfikacja zapisanego obiektu
OR
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:18
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:

Kopiuj
public void savePerson(){
Person p = new Person();
p.setName("Jan");
p.setAge(44);
personRepository.save(p);
p.setName("Aldona"); // co się wtedy wydarzy?
}
edytowany 1x, ostatnio: ornek
K5
Pytanie z testu na rekrutacji? :)
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

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


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
DamianSn
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:52
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.

edytowany 2x, ostatnio: DamianSn
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:29 minut
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4709
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.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 5x, ostatnio: jarekr000000

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.