概念扫盲:Java中的几种对象

概念扫盲:Java中的几种对象

POJO

(1) 含义
  • plain old/oldinary java object
  • 简单无规则的java对象
(2) 解释
  • 不包含业务逻辑,能够控制自己内部 n n n 个属性访问的java对象
  • 那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象
(3) 包含
  • VO、PO…
(4) 意义
  • POJO让开发者可专注于业务逻辑和脱离框架的单元测试。
  • 除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。
  • POJO的意义就在于它的简单而灵活性,因为它的简单和灵活,使得POJO能够任意扩展,从而胜任多个场合,也就让一个模型贯穿多个层成为现实。
  • 先写一个核心POJO,然后实现业务逻辑接口和持久化接口,就成了Domain Model; UI需要使用时,就实现数据绑定接口,变成VO(View Object)。
(5) 扩展
  • POJO仅包含最简单的字段属性,没有多余的东西,它本质上就是一个普通的JavaBean。
  • 但是在POJO的基础上,能够扩展出不同的对象。
  • 为POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就变成了PO。
  • 为POJO增加了数据绑定功能之后,POJO就变成了View Object,即UI Model。
  • 为POJO增加业务逻辑的方法(比如单据审核、转帐……)之后,POJO就变成了Domain Model。
  • POJO还可以当作DTO使用。

Java Beans

(1) 含义
  • JavaBeans 是 Java 中一种特殊的类,可以将多个对象封装到一个对象(bean)中。
  • 特点是可序列化,提供无参构造器,提供 getter 方法和 setter 方法访问对象的属性。
  • 名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
(2) 解释
  • JavaBean是一种 Java 写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:
    • 这个类必须有一个公共的缺省构造函数。
    • 这个类的属性使用 getter 和 setter 来访问,其他方法遵从标准命名规范。
    • 这个类应是可序列化的。
  • JavaBean 是 Java 类,同时它也具有自己的一些特征:
    • javabean 是一个 public 的类
    • javabean 有一个不带参数的构造方法
    • javabean 中的属性通过 getXXX() 和 setXXX() 进行操作

POJO & JavaBean

(1) 含义
  • POJO 和 JavaBean 是我们常见的两个关键字,一般容易混淆。

  • javabean 的要求主要是靠约定而不是靠实现接口,所以许多开发者把 javabean 看作遵从特定命名约定的POJO。

  • 简而言之,当一个 pojo 可序列化,有一个无参的构造函数,使用 getter 和 setter 方法来访问属性时,它就是一个 javabean。

(2) 解释
pojojava beans
不需要有无参构造函数必须有无参构造函数
属性的访问权限无限制private ⇒ \Rightarrow setter和getter
没有业务逻辑没有业务逻辑

PO

(1) 含义
  • persist object
  • 持久化对象
(2) 解释
  • 在O/R 映射 ( 即ORM–ObjectRelationMapping ) 中出现的概念,

  • 通常对应数据模型(数据库),是与数据库汇总的表相映射的java对象,

  • 最简单的PO就是对应数据库中某个表中的一条记录,多个记录则用PO的集合。

  • PO中不应该包含任何对数据库的操作。

  • 生命周期和数据库密切相关

    • 在向数据库插入记录时创建该实体,删除或关闭数据库时该实体随之消亡,
    • 很多优秀的开源框架都实现了将数据库中的PO通过ORM用POJO来实际操作。

VO

(1) 含义
  • value object
  • 值对象
(2) 解释
  • Javabean中和DAO类配合使用的类
  • 常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已
  • 但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要
  • 个人觉得同DTO(数据传输对象);在web上传递。

DO

(1) 含义
  • Domain object
  • 领域对象
(2) 解释
  • 是从现实世界中抽象出来的有形或无形的业务实体。

TO

(1) 含义
  • transfer object
  • 数据传输对象
(2) 解释
  • 不同应用程序之间传输的对象。

DTO

(1) 含义
  • data transfer object
(2) 解释
  • 泛指用于业务层之间的数据传递,和PO一样仅包含数据,
  • 但是抽象出的业务对象,可以和表对应,用new 关键字创建,GC回收。

DAO

(1) 含义
  • data access object

  • 数据访问对象

(2) 解释
  • 此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。
  • 通过它的方法,结合PO对数据库进行相关的操作。

BO

(1) 含义
  • business object
  • 业务层对象
(2) 解释
  • 封装业务逻辑的java对象,这个对象可以包含一个或多个其他对象,
  • 通过调用DAO方法,结合PO、VO进行业务操作。

O/R Mapping

(1) 含义

O/R Mapping 是Object Relational Mapping(对象关系映射)的缩写。

通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。

在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。

(2) 解释
  • VO 与 PO

    • VO,值对象(Value Object);PO,持久对象(Persisent Object),
    • 它们是由一组属性和属性的get和set方法组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。
  • VO

    • VO是用new关键字创建,由GC回收的。PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。
    • VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。
    • VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。
  • PO

    • PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。

      使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。

    • PO的属性是跟数据库表的字段一一对应的。PO对象需要实现序列化接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值