2009-07-22 11 views
7

Quelqu'un at-il un exemple de ce à quoi pourrait ressembler une classe Java en tant que POJO, EJB et EJB 3? J'essaie de comprendre ces technologies Java mais j'ai des problèmes. J'espérais que cela aiderait si je pouvais voir à quoi ressemblerait une mise en œuvre des trois.POJO vs EJB vs EJB 3

Répondre

5

via: http://swik.net/POJO+ejb3

entités EJB3 sont simples POJO. En fait, ils représentent exactement le même concept que les entités persistantes Hibernate. Leurs mappages sont définis via des annotations JDK 5.0 (une syntaxe de descripteur XML pour le remplacement est définie dans la spécification EJB3). Les annotations peuvent être divisées en deux catégories, les annotations de mappage logique (vous permettant de décrire le modèle objet, les associations de classes, etc.) et les annotations de mappage physique (décrivant le schéma physique, tables, colonnes, index, etc.). Nous allons mélanger les annotations des deux catégories dans les exemples de code suivants. Les annotations EJB3 se trouvent dans le package javax.persistence. *. La plupart des IDE compatibles JDK 5 (comme Eclipse, IntelliJ IDEA et Netbeans) peuvent compléter automatiquement les interfaces et les attributs d'annotation pour vous (même sans module spécifique "EJB3", puisque les annotations EJB3 sont des annotations JDK 5 simples).

pour l'exemple: http://www.laliluna.de/ejb-3-tutorial-jboss.html

@Entity 
@Table(name="book") 
@SequenceGenerator(name = "book_sequence", sequenceName = "book_id_seq") 
public class Book implements Serializable { 

entité définit ce qui est un bean entité. La seconde définit le nom de la table. Le dernier définit un générateur de séquence.

+0

Le lien de swik.net semble être mort Jim – MonoThreaded

+0

@ b0x0rz Ce http://swik.net/POJO+ejb3 ne fonctionne pas, montrant le serveur vers le bas. Mettre à jour avec un lien de travail alternatif. – OO7

4

POJO

public class Person { 

    private String name; 
    private int age; 

    public Person() { 
    } 

    public Person(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    // setter & getter for age omitted 

    public String toString() { 
     return "Person " + name; 
    } 

} 

Cela peut être utilisé comme EJB3 ainsi.

En ce qui concerne EJB2 s'il vous plaît oublier qu'il existe et ne pas investir tout moment sur elle à moins que vous devez absolument (travail sur le code par exemple d'héritage).

8

POJO signifie Plaine-Vieux-Java Object - juste une classe Java normale, par opposition aux technologies plus anciennes qui ont nécessité de changer la classe de manière spécifique pour le faire fonctionner avec leur cadre.

class MyService { 

    public String sayHello() { return "hello world"; } 

} 

Ainsi, les POJO peuvent être utilisés partout où une classe normale peut être utilisée. Cependant, si vous voulez en construire une application d'entreprise, vous avez toujours besoin d'un framework - Spring est un bon exemple de framework qui peut fonctionner directement avec les POJO.

EJB2 n'est plus pertinent pour que vous puissiez l'ignorer - à moins que vous devez maintenir un code hérité. Pour satisfaire votre curiosité, le même exemple que ci-dessus nécessiterait plusieurs classes et des descripteurs xml pour le faire fonctionner - il est facile de voir pourquoi il est devenu obsolète.

EJB3 est la dernière norme pour le développement d'applications d'entreprise qui remplace EJB2 et est basé sur le concept de prendre POJO et les annoter afin qu'ils puissent être utilisés dans l'application de l'entreprise.

@Stateless 
class MyService { 
    public String sayHello() { return "hello world"; } 
} 

Comme vous pouvez le voir, c'est très similaire aux POJO. En fait, la plupart des applications écrites pour EJB3 peuvent facilement être converties pour fonctionner avec Spring, et généralement l'inverse fonctionne également.

1

Même cette classe (MyService de classe @Stateless) mentionnée ci-dessus est similaire à POJO, ce n'est pas un POJO de définition traditionnelle car elle dépend du paquetage javax.ejb. Je souhaite que cette dépendance soit juste comme une référence douce (concept DB) au lieu d'être nécessaire. Cet article a mentionné quelques idées concernant ceci: How to Fix Java POJO Annotations