POJO,JAVABEAN,Entity,domain,DTO,ejb区别

Posted 双开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJO,JAVABEAN,Entity,domain,DTO,ejb区别相关的知识,希望对你有一定的参考价值。

在网上搜索过所有名词的定义后,我总结了下面这张表

应该把java中一些对象缩写都说明白了 

2018.04.21

 

 

诸多java对象缩写的定义和作用,区别与联系 
类型 定义 作用 其他
pojo (Plain Ordinary Java Object)简单的Java对象 普通JavaBeans,有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用  
javabean 为写成JavaBean,类必须是具体和公共的,并且具有无参数的构造器。  简单的就是pojo,复杂的就是ejb  
ejb EJB(Enterprise JavaBean),定义用于开发基于组件的企业多重应用程序标准 java的核心代码,分别是回话Bean(Session Bean)、实体Bean(Entity Bean)、和消息驱动Bean(MessageDriven Bean)  
domain  domain是范围,界线,也被用来批一个变量的有效作用域  也常用这个词做一个包,然后在里面放些DAO类文件.   net.baidu.domain.AddUserDao  
dto 数据传输对象(Data Transfer Object),是一种设计模式之间传输数据的对象 数据传输目标往往是数据访问对象从数据库中检索数据,从PO中取值进行传输  
entity 实体bean,一般是用于ORM对象关系映射 一个实体映射成一张表,一般无业务逻辑代码。  
po persistant object持久对象  最形象的理解就是一个PO就是数据库中的一条记录,如hibernate中的一个持久化对象  
vo ViewObject表现层对象  主要对应界面显示的数据对象。对于一个WEB页面,用一个VO对象对应整个界面的值。  
dao data access object数据访问对象 主要用来封装对数据库的访问,包含了各种数据库的操作方法。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO  
bo  business object业务对象  主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。  

 

BObusiness object业务对象

主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、  关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,  关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。

 

DTO :Data Transfer Object数据传输对象,主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

 

 

  
  VO、PO、FormBean之间的区别:

VO是独立的Java Object;而PO是Hibernate纳入其实体容器(Entity Map)的对象。

PO代表了与数据库中某条记录相对应的Hibernata实体,PO的变化在事务提交时将反映到实际的数据库中。

FormBean只是html中表单的封装,是为了弱化request中存储数据的作用,将request对象的get()方法转化为对象的存取值。 
   
    VO和PO在结构上看,没什么区别。但从本质上看是完全不同的。 
   
  VO由new关键字创建,由GC回收。PO则是向数据库中添加新数据时创建,删除数据库中数据时删除,并且它只能存活在一个数据库连接中,断开连接即被销毁。 
   
  VO是业务对象,由业务逻辑使用,它存活的目的就是为数据提供一个生存的地方。PO则是数据对象的表现,它可以简化对象数据与物理数据的转换。 
   
  VO的属性根据当前的业务不同而不同。PO的属性则是跟数据库表的字段一一对应。PO对象需要实现序列化接口。 


  在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态: 
  1.未被持久化的VO,此时就是一个内存对象VO,由JVM管理生命周期。 
  2.已被持久化的PO,并且在Session生命周期内,此时映射数据库连接,由数据库管理生命周期。 
  3.曾被持久化过,但现在和Session已经托管(detached)了,以VO的身份在运行。它还可以进入另一个Session,继续PO状态管理。 
   
  需要注意的是, PO最好只在持久层使用,如果脱离持久层到处使用,会给Hibernate带来不小的PO对象维护开销。























以上是关于POJO,JAVABEAN,Entity,domain,DTO,ejb区别的主要内容,如果未能解决你的问题,请参考以下文章

Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

Java中几种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)

Java BeanPOJO Entity VO PODAO