POJO vs EJB vs EJB 3

时间:2009-07-22 05:01:54

标签: java ejb pojo

有没有人有任何Java类可能看起来像POJO,EJB和EJB 3的例子?我正在尝试了解这些Java技术,但遇到了麻烦。我希望如果我能看到这三者的实现是什么样子会有所帮助。

4 个答案:

答案 0 :(得分:9)

POJO 代表Plain-Old-Java-Object - 只是一个普通的Java类,而不是需要以特定方式更改类以使其与框架一起工作的旧技术。

class MyService {

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

}

因为这样的POJO可以在任何地方使用,可以使用普通类。但是,如果您想要构建一个企业应用程序,您仍然需要一些框架 - Spring是一个可以直接与POJO一起工作的框架的一个很好的例子。

EJB2 不再相关,因此您可以忽略它 - 除非您需要维护一些遗留代码。为了满足你的好奇心,上面的例子需要几个类和xml描述符才能使它运行 - 很容易看出它为何变得过时。

EJB3 是开发替代EJB2的企业应用程序的最新标准,它基于获取POJO并对其进行注释以便可以在企业应用程序中使用的概念。

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

正如您所看到的,它与POJO非常相似。实际上,为EJB3编写的大多数应用程序都可以很容易地转换为与Spring一起使用,通常也可以使用另一种方式。

答案 1 :(得分:5)

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

  

EJB3实体是普通的POJO。实际上它们代表了与Hibernate持久化实体完全相同的概念。它们的映射是通过JDK 5.0注释定义的(用于覆盖的XML描述符语法在EJB3规范中定义)。注释可以分为两类,逻辑映射注释(允许您描述对象模型,类关联等)和物理映射注释(描述物理模式,表,列,索引等)。我们将在以下代码示例中混合两个类别的注释。 EJB3注释位于javax.persistence。*包中。大多数符合JDK 5的IDE(如Eclipse,IntelliJ IDEA和Netbeans)可以为您自动完成注释接口和属性(即使没有特定的“EJB3”模块,因为EJB3注释是普通的JDK 5注释)。

示例: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 {
  

实体定义这是一个实体bean。第二个定义表名。最后一个定义了序列生成器。

答案 2 :(得分: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;
    }

}

这也可以用作 EJB3

关于 EJB2 ,请忘记它存在并且不要在其上投入任何时间,除非您绝对必须(例如处理遗留代码)。

答案 3 :(得分:1)

即使上面提到的这个类(@Stateless类MyService)与POJO类似,它也不是传统定义的POJO,因为它依赖于javax.ejb包。我希望这种依赖关系就像软引用(DB概念)而不是必需的。本文提到了一些有关此问题的想法:How to Fix Java POJO Annotations