Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java POJO vs EJB vs EJB3_Java_Ejb_Pojo - Fatal编程技术网

Java POJO vs EJB vs EJB3

Java POJO vs EJB vs EJB3,java,ejb,pojo,Java,Ejb,Pojo,有人举过Java类作为POJO、EJB和EJB3的例子吗?我试图理解这些java技术,但遇到了麻烦。我希望如果我能看到这三种方法的实现情况会有所帮助。通过: EJB3实体是普通POJO。实际上,它们表示与Hibernate持久实体完全相同的概念。它们的映射是通过JDK5.0注释定义的(用于重写的XML描述符语法在EJB3规范中定义)。注释可以分为两类:逻辑映射注释(允许您描述对象模型、类关联等)和物理映射注释(描述物理模式、表、列、索引等)。在下面的代码示例中,我们将混合这两个类别的注释。EJB

有人举过Java类作为POJO、EJB和EJB3的例子吗?我试图理解这些java技术,但遇到了麻烦。我希望如果我能看到这三种方法的实现情况会有所帮助。

通过:

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

例如:

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

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忘记它的存在,不要在它上面投入任何时间,除非您必须这样做(例如处理遗留代码).

POJO代表普通的旧Java对象—只是一个普通的Java类,与旧技术不同,旧技术需要以特定的方式更改类以使其与框架一起工作

class MyService {

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

}
因此,POJO可以在任何可以使用普通类的地方使用。然而,如果你想用它们构建一个企业应用程序,你仍然需要一些框架——这是一个可以直接与POJO一起工作的框架的好例子

EJB2不再相关,因此您可以忽略它-除非您需要维护一些遗留代码。为了满足您的好奇心,上面的相同示例需要几个类和xml描述符来运行它——很容易理解为什么它会过时

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

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

正如你所看到的,它与波乔非常相似。事实上,大多数为EJB3编写的应用程序都可以轻松转换为使用Spring,通常情况下,另一种方式也可以。

即使上面提到的这个类(@Stateless class MyService)与POJO类似,它也不是传统定义的POJO,因为它依赖于javax.ejb包。我希望这个依赖性就像一个软引用(DB概念),而不是必需的。这篇文章提到了一些与此相关的想法:

swik.net链接似乎已经死了Jim@b0x0rz这不起作用,显示服务器已关闭。使用替代工作链接更新此链接。
@Stateless
class MyService {
    public String sayHello() { return "hello world"; }
}