EJB 3.1 de Printemps ou 3.. Quand choisir?
EJB réalisé de nombreuses améliorations dans les 3.versions x, le Printemps est aussi couramment utilisé et la version 3 est une bonne alternative.
Il y a de nombreux articles sur le web, mais aucune comparaison exacte sur ejb3x contre spring3x.. avez-vous des idées à leur sujet, dans des exemples du monde réel qui est mieux à quelles conditions?
Par exemple, nous voulons nous séparer db et le serveur, ce qui signifie que notre demande sera sur un serveur, notre base de données sera dans un autre serveur.. EJB remoting vs Cluster4Spring etc ?
Faire everyting @Annotation est toujours bon? configuration jamais eu besoin?
- double possible de EJB3 ou "Spring3 + hibernate" qui, adapté
Vous devez vous connecter pour publier un commentaire.
Pour votre cas d'utilisation où l'application s'exécute sur un serveur et la base de données s'exécute sur l'autre, le choix entre les EJB et le Printemps n'est pas pertinent. Toutes les plates-formes prend en charge ce, que ce soit un Java SE demande, un simple conteneur de Servlet comme Tomcat ou Jetty, PHP, Ruby on Rails, ou quoi que ce soit.
Vous n'avez pas besoin de tout type explicite de l'accès distant pour que. Vous venez de définir une source de données, fournir l'URL de votre serveur de bases de vie et c'est tout.
Cela dit, les deux EJB et les Beans Spring ne facilite le travail avec des sources de données. Ils ont tous les deux vous aider à définir une source de données, l'injecter dans les haricots et la gestion des opérations qui leur sont associés.
Des deux, EJB (et Java EE en général) est plus léger et adhère plus à la convention sur la configuration de principe. Printemps nécessite plus de verbosité pour obtenir les mêmes choses et dépend beaucoup de fichiers XML qui peut rapidement devenir très gros et lourd. Le revers de la médaille, c'est que le Printemps peut être moins magique et vous pourriez vous sentir plus en contrôle après avoir tout ce que vous voulez énoncés.
Un autre problème est la façon dont EJB et le Printemps sont développés.
EJB est gratuit (comme dans la bière gratuite), open-source et non-propriétaires. Il existe des implémentations de l'EJB réalisés par des organisations à but non lucratif (Apache), entreprises open source (Redhat/JBoss) et profondément commercial à code source fermé entreprises (IBM). Personnellement, je voudrais éviter ce dernier, mais à chacun ses goûts.
Printemps sur l'autre main est libre et open-source, mais fortement propriétaire. Il y a une seule société de ce qui en Ressort et c'est Springsource. Si vous n'êtes pas d'accord avec Rod, alors tant pis pour vous. Ce n'est pas nécessairement une mauvaise chose, mais une différence que vous pourriez être conscients de.
C'est un débat sans fin, vraiment. Certains prétendent que XML est difficile à maintenir, d'autres soutiennent que les annotations de polluer un pur POJO modèle.
Je pense que l'annotation d'un haricot comme étant un EJB stateless bean (@Stateless) ou une entité JPA (@Entity) est plus proprement fait à l'aide d'annotations. En va de même pour le @EJB ou @Inject dépendance des injections. D'autre part, je préfère JPQL requêtes nommées à être dans des fichiers XML au lieu des annotations, et des injections qui représentent pure données de configuration (comme une valeur max pour quelque chose) pour être en XML aussi bien.
Dans Java EE, chaque annotation peut également être spécifié dans le format XML. Si l'annotation et l'équivalent XML sont présents, le XML emporte sur l'annotation. Cela le rend vraiment pratique pour commencer avec une annotation pour le cas par défaut, mais le remplacer plus tard par l'intermédiaire de XML pour un cas d'utilisation spécifiques.
L'actuel préférence dans Java EE semble être de plus en plus vers (simple) des annotations combinée avec une grande quantité de convention plutôt que configuration".
La vraie question que vous devriez poser est de CDI/EJB ou au Printemps
Il n'est souvent pas le Printemps vs EJB, mais le Printemps vs Java EE. EJB lui-même se compare à des Beans Spring. Deux d'entre eux sont une sorte de haricots contrôlés cours d'exécution à l'intérieur d'un container (conteneur d'EJB (resp. Printemps conteneur).
Globalement, les deux technologies sont plutôt similaires. Reza Rahman a fait une bonne comparaison entre les deux un moment de retour.
EJB sont plus avantageux en raison de la normalisation. Si vous travaillez avec une application légère je pense que le Printemps est bien, mais si vous vous attendez à ce que votre demande sera grand et nécessitera beaucoup d'accès à la mémoire et connexions de données d'accès, vous pouvez envisager de commencer votre développement avec les Ejb. La raison principale étant de clustering et de l'équilibrage de la charge sont intégrés dans l'EJB cadre.
Dans un EJB de l'environnement, lors d'une OREILLE ('E'nterprise 'AR'chive) est déployé, il peut être déployé avec plusieurs Ejb haricots que chacun pourrait avoir un but précis. Disons que vous avez écrit un haricot pour la gestion des utilisateurs et un autre bean pour la gestion des produits. Peut-être qu'un jour vous trouvez que votre utilisateur de services de manière à dépasser vos produits de services d'accès, et vous souhaitez vous déplacer à votre utilisateur de la fève à un autre serveur sur une autre machine. Cela peut être fait dans l'exécution sans modification de votre code. Les haricots peuvent être déplacés entre des serveurs et des bases de données, pour accueillir de clustering et de charge/de données d'équilibrage sans affecter vos développeurs ou vos utilisateurs parce que la plupart de celui-ci peut être configuré au niveau du déploiement.
Une autre raison à l'appui d'un standard, c'est de savoir que la plupart des grands éditeurs tiers seront susceptibles de soutenir qu'il en résulte moins de problèmes lors de l'intégration avec les nouveaux standards de service et de la technologie - et avouons-le, ceux qui sortent comme de nouvelles saveurs de crème glacée. Et si c'est dans une spécification de nouvelles entreprises en démarrage ou en nature, les développeurs peuvent créer une version open-source.
http://www.onjava.com/pub/a/onjava/2005/06/29/spring-ejb3.html
Il y a plus malheureux que même le plus intelligent des designers ou des programmeurs ne peut pas prédire de leurs caractéristiques peut ou ne peut pas être adopté par la communauté de développement qui est la raison principale du logiciel devient gonflé... Java EE est certainement que!
Choisir l'un ou l'autre, mais pas les deux.
Ma préférence personnelle est le Printemps. Je l'ai utilisé sur des projets avec un grand succès au cours des six dernières années. C'est aussi solide que n'importe quel logiciel là-bas.
Printemps peut travailler avec les Ejb si vous choisissez de les avoir dans votre application, mais je ne crois pas que l'inverse est vrai.
Je recommanderais physique distinct des machines pour le web, l'application et les serveurs de base de données si vous pouvez vous le permettre.
Printemps peut travailler avec plusieurs options d'accès distant, y compris du SAVON et de services web REST. Une comparaison des beans Spring avec EJB est au-delà de la portée de cette question. Je ne vois pas ce qu'il a à faire avec votre mise en œuvre. Si vous utilisez le Printemps POJO services qu'ils sont en mémoire plutôt que d'exiger d'un autre réseau hop comme à distance les Ejb. Pensez à Fowler Droit d'Objets Distribués: "Ne fais pas". De vous présenter de temps de latence avec une bonne raison.
EJB 3.1 est le meilleur, tout en étant le standard Java EE 6 applications.
Printemps n'est toujours pas en charge Java 6 CDI(soudure) toujours aussi dépend beaucoup de la configuration XML. EJB 3.1 est puissant et intelligent.
Je pense que le Printemps 3.1 n'a pas besoin de configuration XML. Vous avez la possibilité d'utiliser des annotations pour la configuration.
Je devais mentionner les tests unitaires ici.
En commun de l'application web (contrôleur->service->données>...->view) EJB et Ressort à la fois de fournir des résultats similaires, mais le printemps propose de tester plus facilement.
Dans mon humble expérience, la façon dont vous développez est différente dans les deux ou trois aspects: