gpt4 book ai didi

java - 普通旧 Java 对象 (POJO) 是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 13:51:26 28 4
gpt4 key购买 nike

Plain Old Java Object (POJO) 是什么意思?我找不到足够解释的东西。

POJO's Wikipedia page说 POJO 是一个普通的 Java 对象,而不是一个特殊的对象。现在,在 Java 中什么使或不使和对象特别?

上面的页面还说 POJO 不应该扩展预先指定的类、实现预先指定的接口(interface)或包含预先指定的注释。这是否也意味着 POJO 不允许实现诸如 SerializableComparable 之类的接口(interface)或 Applets 之类的类或任何其他用户编写的类/接口(interface)?

另外,上述政策(不扩展,不实现)是否意味着我们不允许使用任何外部库?

POJO 到底在哪里使用?

编辑:更具体地说,是否允许我扩展/实现属于 Java 或任何外部库的类/接口(interface)?

最佳答案

Plain Old Java Object 这个名字用来强调给定的对象是一个普通的 Java 对象,而不是像 EJB 2 框架定义的那样的特殊对象。

A类{}
B 类扩展/实现 C {}

注意:当 C 是一种分布式框架类或 ifc 时,B 不是 POJO。例如javax.servlet.http.HttpServlet、javax.ejb.EntityBean 或 J2EE extn并且不可序列化/可比较。由于可序列化/可比较对 POJO 有效。

这里 A 是一个独立的简单对象。B 是一个特殊的 obj,因为 B 正在扩展/实现 C。因此 B 对象从 C 中获得更多含义,而 B 限制遵循 C 的规则。并且 B 与分布式框架紧密耦合。因此 B 对象从其定义来看不是 POJO。

使用类A对象引用的代码不必知道它的类型,它可以与许多框架一起使用。

所以 POJO 不必 1) 扩展预先指定的类和 2) 实现预先指定的接口(interface)。

JavaBean 是可序列化的 POJO 示例,具有无参数构造函数,并允许使用遵循简单命名约定的 getter 和 setter 方法访问属性。

POJO 纯粹专注于业务逻辑,不依赖(企业)框架。这意味着它具有业务逻辑代码,但是如何创建此实例,该对象属于哪个服务(EJB..)以及它具有哪些特殊特征(有状态/无状态)将由框架通过使用外部 xml 决定文件。

示例 1:JAXB 是将 java 对象表示为 XML 的服务;这些 java 对象很简单,并提供了默认的构造函数 getter 和 setter。

示例 2:Hibernate,其中简单的 java 类将用于表示一个表。列将是它的实例。

示例 3:REST 服务。在 REST 服务中,我们将有 Service Layer 和 Dao Layer 来对 DB 执行一些操作。所以 Dao 会有供应商特定的查询和操作。 Service Layer 将负责调用哪个 DAO 层来执行 DB 操作。 DAO 的创建或更新 API(方法)将以 POJO 作为参数,并更新 POJO 并将其插入/更新到 DB。这些 POJO(Java 类)将只有每列的状态(实例变量)及其 getter 和 setter。

在实践中,有些人认为注解很优雅,而他们认为 XML 冗长、丑陋且难以维护,而另一些人则认为注解污染了 POJO 模型。因此,作为 XML 的替代方案,许多框架(例如 Spring、EJB 和 JPA)允许使用注解来代替或补充 XML:

优点:
将应用程序代码与基础架构框架解耦是使用 POJO 的众多好处之一。使用 POJO 可以通过将应用程序的业务逻辑与易变的、不断发展的基础架构框架解耦来证明您的应用程序的业务逻辑。升级到新版本或切换到不同的框架变得更容易,风险也更小。 POJO 还使测试更容易,从而简化和加速开发。您的业​​务逻辑会更清晰、更简单,因为它不会与基础架构代码纠缠在一起

引用文献:wiki source2

关于java - 普通旧 Java 对象 (POJO) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326319/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com