web-dev-qa-db-fra.com

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

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

39
user261002

Ce sont des cadres pour différentes couches.

  • [~ # ~] jsf [~ # ~] est pour 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 Action comme Spring MVC, Struts ou Stripes

    Livres: Core JavaServer Faces (3rd Edition)
    Tutoriels: CoreServlets.com

  • EJB 3.x est un conteneur qui fait partie de la pile JavaEE . Il fait des choses comme l'injection de dépendances et la gestion du cycle de vie du bean. Vous avez généralement besoin d'un serveur d'applications JavaEE complet pour EJB3

    Tutoriels: Tutoriel JavaEE 6: EJB
    Livres: EJB 3 en action

  • Spring est également un conteneur, mais Spring peut s'exécuter dans n'importe quel code Java (une classe principale simple, une applet, une application web ou une application d'entreprise JavaEE). Spring peut faire presque tout ce que les EJB peuvent 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)
    Livres: Je n'ai pas trouvé de bon livre en anglais sur Spring 3.x, bien que plusieurs soient en préparation

  • Hibernate a été le premier grand ORM (mappeur relationnel d'objet) sur le Java Plate-forme, et en tant que telle a grandement inspiré [~ # ~] jpa [~ # ~] (qui fait partie de la norme EJB3 mais peut être utilisé sans conteneur EJB). Je suggérerais de coder contre JPA et d'utiliser uniquement hibernate en tant que fournisseur, de cette façon, vous pouvez facilement passer à EclipseLink, etc.

    Livres: Pro JPA 2: Maîtriser l'API Java ™ Persistence (non spécifique à l'hibernation),
    Persistance Java avec Hibernate (vieillir un peu)

54
Sean Patrick Floyd
  • JSF: un framework GUI - vous n'en avez pas besoin si vous voulez seulement implémenter un backend
  • EJB: un standard pour les composants distribués, utilisé pour être horriblement complexe, mais la version 3 du standard est assez facile à utiliser. Cela pourrait faire partie de votre solution.
  • Hibernate: un cadre de mappage relationnel-objet. Il a servi d'inspiration pour la norme JPA (Java Persistence Architecture), qui est désormais prise en charge par Hibernate et les EJB.
  • Spring: un cadre d'application qui fait toutes sortes de choses, dont l'injection de dépendances, les interfaces graphiques Web et les AOP.

Cependant, si vous voulez faire du REST, alors la norme la plus importante pour vous est JAX-RS . Vous pouvez l'utiliser soit dans le framework Spring, soit avec des EJB. Pour la persistance, vous pouvez utiliser Hibernate ou l'implémentation JPA d'un conteneur EJB tel que Glassfish

7
Michael Borgwardt

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

Hibernate est un cadre ORM; un moyen de mapper les objets/classes de votre application aux tables de base de données. Elle est liée à la façon dont vous conservez 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 un peu comme son propre cadre d'application.

JSF est Java Server Faces, une technologie d'affichage pour Java applications Web.

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

Les gens sont très satisfaits du printemps - je recommande d'utiliser cela ...

5
hvgotcodes
  • JSF - Java Faces du serveur -> Interface utilisateur Web
  • EJB - Enterprise Java Beans -> Composants avec état (orientés session) ou sans état (services), pilotés par message (asynchrones)
  • Hibernate - Service de persistance comme les autres implémentations JPA (Eclipselink, OpenJPA ou Toplink)
  • Le printemps est un autre monde sans EJB, qui est capable d'intégrer d'autres technologies d'affichage. C'est assez flexible.

Vous devez choisir entre JEE5/6 et le printemps. Prenez la pilule rouge ou bleue, n'utilisez pas les deux.

2
stacker