2009-03-27 12 views
1

nous utilisons EJB3 dans notre application. Notre objectif de conception est de séparer la couche de persistance de la couche métier. Nous avons donc développé des classes XXXbean à utiliser comme classes SLSB et XXXRepository à utiliser comme classes de persistance. Nous avons aussi POJO qui implémente une logique NON métier réutilisable (obtenir la liste des pays etc) et nous appelons alors les classes service/helper.Quand utiliser POJO et Quand utiliser SLSB

Nous utilisons EJB3 JPA (en utilisant le fournisseur Hibernate) et les classes Repository ont toutes les méthodes pour l'opération CRUD et les méthodes get pour l'accès aux données. Actuellement, les classes XXXRepository sont toutes des POJO et nous les instancions directement à partir du bean XXXClasses ou du service Objects.

Les classes XXXRepository doivent-elles être SLSB? Quels seraient les avantages et les inconvénients de les convertir en SLSB?

Répondre

0

Un EJB est un bean géré par conteneur. Cela signifie que le conteneur gère un grand nombre d'options telles que la transaction, la sécurité, l'accès aux ressources (par exemple la base de données) et offre des possibilités telles que les minuteurs, les accès à distance ou les intercepteurs. Un autre avantage est le pool et la réutilisation des instances. Je dirais que si vous avez besoin de quelque chose de ce conteneur géré options comme un gestionnaire d'entité, puis utiliser un EJB, dans votre cas, un SLSB. Mais si vous n'avez besoin d'aucune des fonctionnalités fournies, un POJO habituel fera ce travail.

Si les classes XXXRepository ne sont pas SLSB, comment accèdent-elles à la base de données pour effectuer les opérations CRUD? Utilisez-vous la session Hibernate directement? Comment sont gérées les transactions? Il peut être judicieux de transformer ces classes dans SLSB et d'utiliser le gestionnaire d'entités injecté pour ce cas.

Adam Bien a écrit un livre intitulé Real World Java EE Pattern. Dans ce livre, il écrit sur les bonnes architectures d'EJB et mentionne, quelles classes devraient être un EJB (par exemple un ServiceFacade comme une frontière de transaction) et quelles classes peuvent être utilisées comme POJOs.

Questions connexes