J'utilise Spring Boot et je dois maintenant gérer les transactions lors de mon inscription à la base de données.
Il semble que si vous ajoutez l'annotation @Transactional à une méthode publique et déclenchez une exception, elle sera automatiquement annulée.
C'est pourquoi je l'ai essayé, mais cela n'a pas du tout fonctionné. J'ai essayé de modifier les paramètres donnés aux annotations, mais ils ne sont pas du tout rétablis.
Après avoir lutté pendant deux ou trois heures et rampé sur la mer sur le Web, j'ai vu un phare divin.
https://ameblo.jp/kochablo/entry-11578714824.html
Dieu
Cela a fonctionné d'un seul coup. Merci au frère pionnier. Merci beaucoup.
Cependant, je me demandais comment c'était de l'appeler directement. Je voudrais aider quelqu'un qui est en difficulté comme un frère pionnier, et je l'expliquerai en détail ci-dessous.
SampleController.java
class SampleController{
@Autowired
private SampleService sampleService;
public String sample(){
sampleService.transactionalInsert();
return "sampleView";
}
}
SampleService.java
class SampleService{
public void transactionalInsert(){
doInsert();
}
@Transactional
public void doInsert(){
//D'une manière ou d'une autre, le traitement tel que Insérer dans la base de données
//Traitement pour lancer RuntimeExeption si cela ne fonctionne pas
}
}
Cela ne devrait pas être le cas.
SampleController.java
class SampleController{
@Autowired
private SampleService sampleService;
public String sample(){
sampleService.doInsert();
return "sampleView";
}
}
SampleService.java
class SampleService{
public void transactionalInsert(){
doInsert();
}
@Transactional
public void doInsert(){
//D'une manière ou d'une autre, le traitement tel que Insérer dans la base de données
//Traitement pour lancer RuntimeExeption si cela ne fonctionne pas
}
}
Avez-vous compris? Quoi qu'il en soit, si vous appelez la méthode @Transactional depuis la classe @Autowired, c'est fou.
Recommended Posts