[JAVA] J'étais accro au @Transactional de Spring

Ravi de vous rencontrer

Ceci est le premier message. Je pense que la plupart des messages sont des mémorandums sur ce sur quoi je suis tombé au travail. Sois gentil. .. ..

environnement

Java 8 Spring Boot 1.5.14

Ce que je voulais faire

Gérez les transactions avec @Transactional et laissez DB (MySQL) effectuer le traitement des mises à jour

Point de trébuchement

La classe Service a l'annotation @Transational (readonly = true) Dans la méthode de cette classe

'''hogeRepository.save()

Je faisais un processus de sauvegarde comme

contenu de l'erreur

Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

Conclusion

La transaction qui lance le processus de mise à jour @Transational(readonly=false) Tu dois le faire.

Autre

Si @Transactional est donné à la fois à la classe et à la méthode, il sera écrasé par celui défini dans la méthode.

Impressions

Parce que les transactions ne sont pas placées dans des endroits inattendus (par exemple en ajoutant des méthodes) Je pensais que ce n'était pas si bon de donner @Transactional à une classe

Note

https://dev.classmethod.jp/server-side/java/spring-nested-declarative-transaction/

Post-scriptum (2019/1/22)

Dans la méthode que j'ai oublié d'ajouter @Transactional (readOnly = xxxx), Après avoir accédé au référentiel à partir du service et obtenu les données, Si vous obtenez des données imbriquées avec LazyLoad de JPA en dehors de la méthode de la classe Service Une exception LazyInitializationException s'est produite. Veuillez noter que LazyLoad, qui se charge tardivement, ne fonctionnera pas s'il est en dehors de la méthode.

Recommended Posts

J'étais accro au @Transactional de Spring
Résumé de ce que j'ai appris dans Spring Batch
Je suis resté coincé dans le fichier
[Java] Ce qui est resté bloqué dans l'encapsulation
Qu'est-ce que @Autowired dans Spring Boot?
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
Ce que j'ai fait lors de la migration de la série Spring Boot 1.5 vers la série 2.0
Ce que j'ai étudié dans le développement de Wagby Note 1
[* Java *] J'ai participé au JJUG CCC 2019 Spring
Je suis resté coincé en utilisant un cas de serpent pour le nom de variable dans Spring Boot
Où je suis resté coincé dans le "tutoriel sur les rails" d'aujourd'hui (08/10/20)
Résumé de ce que j'ai appris sur Spring Boot
Où je suis resté coincé dans le "tutoriel des rails" d'aujourd'hui (05/10/2020)
Où je suis resté coincé dans le "tutoriel des rails" d'aujourd'hui (06/10/20)
J'ai essayé Spring.
Ce que j'ai appris
Où je suis resté coincé dans le "tutoriel sur les rails" d'aujourd'hui (04/10/20)
Où je suis resté coincé dans le "tutoriel sur les rails" d'aujourd'hui (07/10/20)
Exécution asynchrone des requêtes examinée dans Spring Boot 1.5.9
J'ai un symbole de résolution impossible dans Android Studio
Ce que j'ai appris en Java (partie 3) Déclaration d'exécution des instructions
J'ai eu une erreur "méthode non définie` create" "dans RSpec
J'ai créé un serveur et un client Restful au printemps.
Ce que j'ai appris lors de la création d'un serveur en Java
Je suis resté coincé dans un clone d'un tableau à deux dimensions
Ce que je suis tombé sur le test ActiveModel :: Serializer
J'ai essayé de découvrir ce qui avait changé dans Java 9
Inject Logger au printemps
[J'ai essayé] Tutoriel de printemps
[Note personnelle] Rétrospective de ce que je suis resté coincé dans Docker ... y compris la connaissance de Linux
Ce que j'ai appris ② ~ Mock ~
Qu'est-ce que Spring Tools 4
Utilisez Interceptor au printemps
J'ai essayé Spring Batch
Microservices dans Spring Cloud
Obtenez des cookies au printemps
Ce que j'ai corrigé lors de la mise à jour vers Spring Boot 1.5.12 ・ Ce à quoi j'étais accro
J'ai essayé de vérifier ceci et celui de Spring @ Transactional
Ce que j'ai appris en Java (partie 4) Branchement conditionnel et répétition
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional