java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

O/R Mapping 是 Object Relational

Mapping (对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在 O/R

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

VO ,值对象 (Value Object) ,

PO ,持久对象 (Persisent

Object) ,它们是由一组属性和属性的 get 和 set 方法组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。

1. VO 是用 new 关键字创建,由 GC 回收的。

   PO 则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。

2. VO 是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。

   PO 则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。

3. VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。

PO 的属性是跟数据库表的字段一一对应的。

PO 对象需要实现序列化接口。

java 的 (PO,VO,TO,BO,DAO,POJO) 解释

PO(persistant object) 持久对象

在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。

VO(value object) 值对象

通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 . 个人觉得同 DTO( 数据传输对象 ), 在 web 上传递。

TO(Transfer Object) ,数据传输对象

在应用程序不同 tie( 关系 ) 之间传输的对象

BO(business object) 业务对象

从业务模型的角度看 , 见 UML 元件领域模型中的领域对象。封装业务逻辑的 java 对象 , 通过调用 DAO 方法 , 结合 PO,VO 进行业务操作。

business object: 业务对象

主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

比如一个简历,有教育经历、工作经历、社会关系等等。

我们可以把教育经历对应一个 PO ,工作经历对应一个 PO ,社会关系对应一个 PO 。

建立一个对应简历的 BO 对象处理简历,每个 BO 包含这些 PO 。

这样处理业务逻辑时,我们就可以针对 BO 去处理。

QO :查询对象

POJO(plain ordinary java object) 简单无规则 java 对象

纯的传统意义的 java 对象。就是说在一些 Object/Relation

Mapping 工具中,能够做到维护数据库表记录的 persisent

object 完全是一个符合 Java Bean 规范的纯 Java 对象,没有增加别的属性和方法。我的理解就是最基本的 Java Bean ,只有属性字段及 setter 和 getter 方法!。

DAO(data access object) 数据访问对象

是一个 sun 的一个标准 j2ee 设计模式, 这个模式中有个接口就是 DAO ,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和 PO 结合使用, DAO 中包含了各种数据库的操作方法。通过它的方法 , 结合 PO 对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合 VO,

提供数据库的 CRUD 操作 ...

DTO :

Data Transfer Object 数据传输对象

主要用于远程调用等需要大量传输对象的地方。

比如我们一张表有 100 个字段,那么对应的 PO 就有 100 个属性。

但是我们界面上只要显示 10 个字段,

客户端用 WEB service 来获取数据,没有必要把整个 PO 对象传递到客户端,

这时我们就可以用只有这 10 个属性的 DTO 来传递结果到客户端,这样也不会暴露服务端表结构 . 到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为 VO

DAO :数据访问对象 —— 同时还有 DAO 模式

DTO :数据传输对象 —— 同时还有 DTO 模式

O/R Mapper 对象 / 关系 映射

定义好所有的 mapping 之后,这个 O/R

Mapper 可以帮我们做很多的工作。通过这些 mappings, 这个 O/R

Mapper 可以生成所有的关于对象保存,删除,读取的 SQL 语句,我们不再需要写那么多行的 DAL 代码了。

实体 Model( 实体模式 )

DAL( 数据访问层 )

IDAL( 接口层 )

DALFactory( 类工厂 )

BLL( 业务逻辑层 )

BOF     Business Object Framework       业务对象框架

SOA     Service Orient Architecture     面向服务的设计

EMF     Eclipse Model Framework       

Eclipse 建模框架

下面是个人理解

VO基本理解

value object:值对象

view object:表现层对象

简要理解(部分人认为同DTO有部分相同作用)

通常用于业务层之间的数据传递,主要对应界面显示的数据对象,他的对应对象可以是一个WEB页面,或者SWT、SWING的一个界面,通常用一个VO对象对应整个界面的值;

O/R Mapper基本理解

Object Relational Mapping:对象/关系 映射*

作用

定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作;通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了

建议了解

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

PO基本理解

persistant object :持久对象

注意

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

简介

在o/r映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了。可以看成是与数据库中的表相映射的java对象,一般包含数据模型(数据库),部分业务逻辑;最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合;

简要理解

PO对应数据库表,且数据库表会映射一个PO(java对象),一个PO就是数据库中的一条记录,我们这可以把这条记录作为一个对象处理,可以方便的转为其它对象;

VO与PO区别

  • VO是用new关键字创建,由GC回收的
  • PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁
  • VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方
  • PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换
  • VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称
  • PO的属性是跟数据库表的字段一一对应的
  • PO对象需要实现序列化接口

BO基本理解

business object:业务对象

简要理解

封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作 ;

理解(BO统筹PO)

主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

比如一个简历,有教育经历、工作经历、社会关系等等。

我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。

建立一个对应简历的BO对象处理简历,每个BO包含这些PO。

这样处理业务逻辑时,我们就可以针对BO去处理。

POJO基本理解

plain ordinary java object:简单无规则java对象

简介

单纯的传统意义的java对象。就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法

简要理解

POJO首先区别于其他对象,同时是最常见最多变的一个中间常用对象

不同场景下POJO的代表

  • 一个POJO持久化以后就是PO
  • 直接用它传递、传递过程中就是DTO
  • 直接用来对应表示层就是VO

DAO(常用)基本理解

data access object:数据访问对象

简介

一个标准j2ee设计模式,夹在业务逻辑与数据库资源中间,通过DAO接口访问数据库,DAO中包含了各种数据库的操作方法(CRUD操作),通过它的方法,结合PO对数据库进行相关的操作,基本没有互相转化的可能性和必要;同时可以通过它把POJO持久化为PO,用PO组装出来VO、DTO ~

简要理解

通常和PO结合使用,DAO中包含了各种数据库的操作方法;通过它的方法 , 结合PO对数据库进行相关的操作;配合VO,提供数据库的CRUD(增删改查)操作

DTO(较少用,过渡作用)基本理解

Data Transfer Object:数据传输对象

简要理解

主要用于远程调用需要大量传输对象的地方

列子理解

比如我们一张表有100个字段,那么对应的PO就有100个属性.

但是我们界面上只要显示10个字段,

客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,

这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

TO基本理解

Transfer Object:数据传输对象

简要理解

在应用程序不同tie(关系)之间传输的对象

QO基本理解

Query Object:查询对象

简要理解

存储一些与持久性查询操作的语句对象

DO基本理解

Domain Object:领域对象

简要理解

就是从现实世界中抽象出来的有形或无形的业务实体

最后再介绍下Bean,Conn

Bean包就是专门放置属性类的,比如在数据库中创建了一个表,那么你可以把这个表的各个字段,分别定义成属性放置在一个类里,并写明setter和getter方法,然后把这个类放置在bean包下面。

Conn建立了一个数据库连接对象,其他所有涉及到数据库操作的文件都需要包含这个文件并引用该对象。

更多关于java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解请查看下面的相关链接

(0)

相关推荐

  • Java的Spring框架中DAO数据访问对象的使用示例

    Spring DAO之JDBC   Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO等.它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常. 为了便于以一种一致的方式使用各种数据访问技术,如JDBC.JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展.这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其

  • Java之dao模式详解及代码示例

    什么是dao模式? DAO(Data Access Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作.在实际的开发中,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中.用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法.在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口,在逻辑上该类对应一个特定的数据存储.DAO模式实

  • java 设计模式(DAO)的实例详解

    java 设计模式(DAO)的实例详解 应用场景:在Java程序中,经常需要把数据持久化,也需要获取持久化的数据,但是在进行数据持久化的过程中面临诸多问题(如:数据源不同.存储类型不同.供应商不同.访问方式不同等等),请问如何能以统一的接口进行数据持久化的操作? 其实这个我没学号(≧ ﹏ ≦).我的理解就是一个产品面向的用户不是单一的,所以我们要兼容许多情况如前面提到的数据源不同.存储类型不同.供应商不同.访问方式不同等等. ★ 解决方案 DAO的理解: 1.DAO其实是利用组合工厂模式来解决问

  • 基于java中的PO VO DAO BO POJO(详解)

    一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的ava对象. 最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合PO中应该不包含任何对数据库的操作. 二.VO:value object值对象.通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已.但应是抽象出的业务对象可以和表对应也可以不这根据业务的需要 三.DAO:data access object 数据访问对象,此对象用于访问数据库.通常和PO结合使用,DAO中包含了各种

  • 全面了解JAVA_BaseDAO数据处理类

    实例如下: package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BaseDao { private String drive="com.microsoft.sqlserver.jdbc.SQLSer

  • Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法

    SqlSessionTemplate SqlSessionTemplate是MyBatis-Spring的核心.这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常.SqlSessionTemplate是线程安全的,可以被多个DAO所共享使用. 当调用SQL方法时,包含从映射器getMapper()方法返回的方法,SqlSessionTemplate将会保证使用的SqlSession是和当前Spring的事务相关的.此外,它管理session的生命周期,包

  • 通过代理类实现java连接数据库(使用dao层操作数据)实例分享

    首先,我们在一个java文件中定义要存储的结构类型: 复制代码 代码如下: import java.util.Date ;/** * * @author Nero */public class Emp {    private int empno ;    private String ename ;    private String job ;    private Date hiredate ;    private float sal ;    public void setEmpno(

  • java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

    O/R Mapping 是 Object Relational Mapping (对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在 O/R Mapping 的世界里,有两个基本的也是重要的东东需要了解,即 VO , PO . VO ,值对象 (Value Object) , PO ,持久对象 (Persisent Object) ,它们是由一组属性和属性的 get 和 set 方法组成.从结构上看,它们并没有什么不同的地方.但从其意义和本质上来看是完全不同的.

  • Java中的字节,字符输出流与字节和字符输入流的简单理解

    目录 字节输出流OutputStream 字符输出流 字节输入流InputStream 字符输入流Reader 字节流和字符流的区别 总结 我先解释一下什么叫IO流: I:指的是InputStream,这是一个抽象类,最常用的子类是FileInputStream O:值得是OutputStream,这也是一个抽象类,最常用的子类是OutputStream 流:由于在进行文件操作的时候大多数是用的byte数据,这些数据并不是一次性写入(读取),而是像水龙头那样慢慢的流(想象一下你接水的场景) 废话

  • Java中集合关系图及常见操作详解

    下面是一张下载的Java中的集合类型的继承关系图,便于正确的理解和使用相应的集合类型. 几个面试常见问题: 1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别? A:Vector和HashTable是线程同步的(synchronized).性能上,ArrayList和HashMap分别比Vector和Hashtable要好. 2.Q:大致讲解java集合的体系结构 A:List.Set.Map是这个集合体系中最主要的三个接口.       其中Lis

  • 浅谈java中字节与字符的区别

    最近在看Java中的IO相关知识,发现对字节和字符的理解还不够.写篇总结记录一下. 一.字节 所谓字节(Byte),是计算机数据存储的一种计量单位.一个二进制位称为比特(bit),8个比特组成一个字节,也就是说一个字节可以用于区分256个整数(0~255).由此我们可以知道,字节本是面向计算机数据存储及传输的基本单位,后续的字符也就是以字节为单位存储的,不同编码的字符占用的字节数不同. 那么在Java中,除了存储的意义外,Java还将字节Byte作为一种基本数据类型,该数据类型在内存中占用一个字

  • java中VO和DTO之间的转换实现

    目录 一.背景 二.详细讲解 注意 三.实体对象间的转换 四.第一种方法的具体代码例子 五.第二种方法的具体代码例子(使用dozer) 六.结束 一.背景 1.领域模型中的实体类分为四种类型:VO.DTO.DO.PO 二.详细讲解 1.VO(View Object),视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. 2.DTO(Data Transfer Object),数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据

  • java实现相同属性名称及相似类型的pojo、dto、vo等互转操作

    已应用于实际项目: 1.thrift对象与dto之间的互转 2.pojo与dto之间的互转 3.pojo与vo之间的互转 1.核心转换工具类,对特别复杂类型不做处理,因为业务场景还未覆盖 package littlehow.convert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Field; import java.lang.reflect.Method; import

  • java中VO的使用解析

    目录 java中VO的使用 场景 java里VO是什么 1.PO:persistant object 持久对象 2.VO:value object值对象 java中VO的使用 场景 现在我们需要从数据库中查询用户列表t_user,对应的实体类如下: import io.swagger.annotations.ApiModelProperty; public class User { @ApiModelProperty(value = "用户id") private String use

  • Java 中利用泛型和反射机制抽象DAO的实例

    Java 中利用泛型和反射机制抽象DAO的实例 一般的DAO都有CRUD操作,在每个实体DAO接口中重复定义这些方法,不如提供一个通用的DAO接口,具体的实体DAO可以扩展这个通用DAO以提供特殊的操作,从而将DAO抽象到另一层次,令代码质量有很好的提升 1.通用接口 import java.io.Serializable; import java.util.List; public interface BaseDao<T> { T get(Serializable id); List<

  • java中你的项目应该如何正确分层

    背景 说起应用分层,大部分人都会认为这个不是很简单嘛,就 Controller,Service,Mapper 三层.看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,Controller 做的逻辑比 Service 还多,Service 往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗.这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦. 的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这

随机推荐