J'ai un slsb contenant ma logique métier, comment utiliser les génériques pour changer les trois méthodes suivantes en une méthode générique? Les deux premiers sont les mêmes db, le troisième est une base de données différente. Est-ce que les méthodes nécessitent également une annotation supplémentaire par rapport à la transaction?Comment implémenter des génériques en utilisant JPA/Hibernate EntityManager et EJB3.0?
@PersistenceContext(unitName = "db")
private EntityManager myEntityManager;
@PersistenceContext(unitName = "db2")
private EntityManager myDB2EntityManager;
@TransactionAttribute(TransactionAttribute.Required)
public void crud(MyEntity myEntity) throws MyException {
myEntityManager.merge(myEntity);
}
public void crud(ADifferentEntity aDifferentEntity) throws MyException {
myEntityManager.merge(aDifferentEntity);
}
public void crud(DB2Entity db2Entity) throws MyException {
myDB2EntityManager.merge(db2Entity);
}
Merci beaucoup à l'avance. À la votre!
Je pensais que l'annotation sans état supprime le besoin d'annotation d'attribut de transaction sur chaque méthode dans ejb3.0? – NimChimpsky
Oui, dans EJB3, toutes les méthodes EJB sont par défaut transactionnelles (REQUIRED). Ainsi, @TransactionAttribute n'est requis pour aucune des méthodes EJB, sauf si vous avez besoin d'un attribut tx différent de celui par défaut de la méthode (par exemple REQIURES_NEW) – Dzhu