Comment puis-je valider que tous les accès JDBC se produisent sur une transaction active, , c'est-à-direjava.sql.Connection.getAutoCommit()
toujours renvoyer false? J'utilise Spring pour la gestion des transactions (@Transactional
) et Hibernate pour l'accès aux données.Validation de tous les appels JDBC dans une transaction
Mise à jour: Ce qui arrive est que certains accès Hibernate est effectuée sans la méthode de service étant annotée avec @Transactional
. C'est ce que je veux être averti.
Mise à jour 2: Code échantillon
Il est possible d'appeler le code suivant:
public ServiceImpl implements Service {
// missing @Transactional
public List<String> getSomeIds() {
return getDao().getSomeIds();
}
}
Merci pour la réponse. Ce qui se passe, c'est que certains accès Hibernate sont effectués sans que la méthode de service soit annotée avec @Transactional. C'est ce que je veux être averti. –
Veuillez donner un exemple d'accès Hibernate sans la méthode de service. Tout devrait se passer à travers la couche de service. Vous pouvez écrire un aspect pour interdire expressément l'accès DAO en dehors de la couche de service si vous le souhaitez. – duffymo
J'ai ajouté un exemple de code. Est-ce que cela clarifie la question? –