Ist die CrudRepository .delete () - Methode transaktional?
Bei der Verwendung von Spring-data ist es möglich zu verlängern die CrudRepository.
Wie funktioniert diese Repositories .delete()
Methode arbeiten "unter der Haube"?
Zudem ist diese Methode Transactional
? Wenn dies der Fall ist, gibt es keine Notwendigkeit zu verwenden @Transactional
Anmerkungen bei der Verwendung Spring-data
.
e.g ist @Transactional
hier gebraucht? :
Erweitern CrudRepository:
public interface PersonRepository extends CrudRepository<Person, Integer> {
}
Mithilfe der delete-Methode in der service Klasse:
@Transactional
public void deletePerson(Person person) {
personRepository.delete(person);
}
Edit: Wie würde @Transactional
hier arbeiten?
@Transactional
public void deletePersonAndTable(Person person, Table table) {
personRepository.delete(person);
tableRepository.delete(Table);
}
- Definieren Sie "erweitern Sie den CrudRepository". Dein Beispiel-code macht genau das; Nein? Eine Transaktion erforderlich ist, etwas zu tun mit der Datenbank, so gibt es keine Notwendigkeit, für
@Transactional
Anmerkung hier - es wäre erforderlich, um die Gruppe mehr als eine DAO-Betrieb in einer einzigen Transaktion. - Haben Sie versucht, zu entfernen
@Transactional
und sehen, wenn die Transaktion ein commit ausgeführt wird? - bin nur zeigen, wie mein Repository erweitert die CrudRepository? Können Sie bitte definieren, was du damit meinst: "erforderlich, um der Gruppe mehr als eine DAO-Bedienung in einem einzigen Transaktion" ? Dank
- Wenn Sie in Ihrer Methode löschen es ist mehr eine Datenbank zugreifen muss transaktional sein, damit es Sinn hinzufügen Transaktions-anotation. Also, wenn es cascading z.B. : beim löschen einer person mehr einen Tisch beteiligt sind, die Notwendigkeit, die mit Transaktions-Transaktions-anotation
- im nicht sicher, was du meinst? Können Sie ein Beispiel in der Antwort?
- wenn unsere delete-operation bedeutet mehr einen Tisch, es muss eine Transaktion in Ihrem Beispiel müssen Sie eine Transaktion löschen, weil Sie 2 Objekte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht brauchen, um hinzuzufügen, @Transactional-Annotationen selbst.
Vom https://spring.io/blog/2011/02/10/getting-started-with-spring-data-jpa/:
Aber sollten Sie hinzufügen, in Ihrem DOA obwohl, wenn Sie wollen, um einige Aktionen anschließend das sollte nur ausgeführt werden, alle zusammen oder gar keine (das ist, was Transaktionen sind für).
@Transactional
wird, nur öffnen Sie eine neue Transaktion, wenn es nicht als in einer anderen Methode annotiert mit@Transactional
.