41 votes

Quelle est la différence entre EJB, hibernate, spring et JSF ?

Je suis très confus avec les différents frameworks java. Je veux créer un projet de serveur java pour offrir un service web reposant sur des données, mais je ne sais vraiment pas quel framework je dois choisir. Quelle est la différence entre JSF, EJB, Hibernate et Spring ? Aidez-moi à mieux les comprendre.

56voto

Sean Patrick Floyd Points 109428

Il s'agit de cadres pour différentes couches.

  • JSF est destiné à la couche vue (web), c'est un framework orienté composant (chaque partie d'une page est un composant, il a un état) comme Wicket ou Tapestry, et contrairement aux frameworks d'action comme Spring MVC, Struts ou Stripes

    Des livres : Core JavaServer Faces (3ème édition)
    Tutoriels : CoreServlets.com

  • EJB 3.x est un conteneur qui fait partie de la JavaEE la pile. Elle permet notamment l'injection de dépendances et la gestion du cycle de vie des beans. Pour EJB3, vous avez généralement besoin d'un serveur d'application JavaEE complet.

    Tutoriels : Tutoriel JavaEE 6 : EJB
    Des livres : EJB 3 en action

  • Printemps est également un conteneur, mais Spring peut s'exécuter dans n'importe quel code java (une simple classe principale, une applet, une application web ou une application d'entreprise JavaEE). Spring peut faire presque tout ce que EJB peut faire et bien plus encore, mais je dirais qu'il est surtout connu pour l'injection de dépendances et la gestion non intrusive des transactions.

    Référence en ligne (excellent)
    Des livres : Je n'ai pas trouvé de bon livre en anglais sur Spring 3.x, bien que plusieurs soient en cours de réalisation.

  • Hibernate a été le premier grand ORM (Object relational mapper) sur la plate-forme Java, et en tant que tel, il a grandement inspiré JPA (qui fait partie de la norme EJB3 mais peut être utilisé sans conteneur EJB). Je vous suggère de coder contre JPA et de n'utiliser qu'hibernate comme fournisseur, de cette façon vous pourrez facilement passer à EclipseLink, etc.

    Des livres : Pro JPA 2 : Maîtriser l'API de persistance Java™ (non spécifique à l'hibernation),
    Persistance Java avec Hibernate (ça devient un peu vieux)

7voto

Michael Borgwardt Points 181658
  • JSF : un framework GUI - vous n'en avez pas besoin si vous voulez seulement implémenter un backend.
  • EJB : une norme pour les composants distribués, autrefois horriblement complexe, mais la version 3 de la norme est assez facile à utiliser. Cela pourrait faire partie de votre solution.
  • Hibernate : Un cadre de mapping objet-relationnel. Il a servi d'inspiration pour la norme JPA (Java Persistence Architecture), qui est maintenant supportée à la fois par Hibernate et les EJB.
  • Le printemps : Un cadre d'application qui fait toutes sortes de choses, parmi lesquelles l'injection de dépendances, les interfaces graphiques web et la POA.

Toutefois, si vous souhaitez utiliser REST, la norme la plus importante pour vous est la suivante JAX-RS . Vous pouvez l'utiliser soit dans le cadre de Spring, soit avec les EJB. Pour la persistance, vous pouvez utiliser Hibernate ou l'implémentation JPA d'un conteneur EJB tel que Glassfish.

5voto

hvgotcodes Points 55375

EJB est un Enterprise Java Bean -- voir le lien pour la description, mais en gros, c'est la façon java par défaut d'écrire une application d'entreprise.

Hibernate est un cadre ORM ; un moyen de faire correspondre les objets/classes de votre application aux tables de la base de données. Il est lié à la manière dont vous faites persister vos données dans une base de données.

Spring est un conteneur IoC/Dependency Injection qui fournit de nombreuses abstractions utiles et bien testées pour vous faciliter la vie. Spring est en quelque sorte son propre cadre d'application.

JSF est Java Server Faces, une technologie de visualisation pour les applications web Java.

Vous utiliserez soit EJB, soit Spring. Vous pouvez utiliser Hibernate comme implémentation de la persistance, si vous le souhaitez, avec l'un ou l'autre ; vous n'êtes pas obligé de le faire. Pour les services Web RESTFul, vous n'avez pas vraiment besoin de JSF.

Les gens sont très heureux avec Spring - je recommande de l'utiliser...

2voto

stacker Points 34209
  • JSF - Java Server Faces -> Interface utilisateur Web
  • EJB - Enterprise Java Beans -> Composants avec état (orientés session) ou sans état (services), pilotés par messages (asynchrones).
  • Hibernate - Service de persistance comme d'autres implémentations JPA (Eclipselink, OpenJPA ou Toplink)
  • Spring est un autre monde sans EJBs, qui est capable d'intégrer d'autres technologies de vue. Il est assez flexible.

Vous devez décider entre JEE5/6 et spring. Prenez la pilule rouge ou la pilule bleue ; n'utilisez pas les deux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X