JavaBean,POJO,VO,DTO的区别和联系
你好,按照标准来说:
1、entity里的每一个字段,与数据库相对应,
2、dto里的每一个字段,是和你前台页面相对应,
3、VO,这是用来转换从entity到dto,或者从dto到entity的中间的东西。
举个例子:
你的html页面上有三个字段,name,pass,age
你的数据库表里,有两个字段,name,pass(注意没有age哦)而你的dto里,就应该有下面三个(因为对应html页面上三个字段嘛)
private string name;
private string pass;
private string age;
这个时候,你的entity里,就应该有两个(因为对应数据库表中的2个字段嘛)
private string name;
private string pass;
到了这里,好了,业务经理让你做这样一个业务“年龄大于20的才能存入数据库”
这个时候,你就要用到vo了
你要先从页面上拿到dto,然后判断dto中的age是不是大于20,如果大于20,就把dto中的
name和pass拿出来,放到vo中,然后在把vo中的name和pass原封不懂的给entity,然后根据
entity的值,在传入数据库,这就是他们三个的区别
PS,VO和entity里面的字段应该是一样的,vo只是entity到dto,或者dto到entity的中间过程,如果没有这个过程,你仍然可以做到增删改查,这个就根据具体公司来的,纯手打,望采纳
POJO是一种概念或者接口,身份及作用随环境变化而变化,DTO是经过处理后的PO,可能增加或者减少PO的属性,一个POJO持久化以后就是PO。
一、具体含义:
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操作。
二、相关概念:
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进行业务操作。
VO即value object值对象
主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。
DTO (经过处理后的PO,可能增加或者减少PO的属性):
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
POJO(POJO是一种概念或者接口,身份及作用随环境变化而变化) :
POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口
plain ordinary java object 简单java对象
即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。
一个POJO持久化以后就是PO。
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO
用eclipse运行程序时的问题
avaBean是java类,属于某些特定的译码知道方针,并且扩展了适应性和范围,允许用户访问内部的属性和方法。通过这些,JavaBean类可以用于下列方法: 1.在IDE中,JavaBean的功能允许应用开发者浏览其中的方法,即使JavaBean是被编译的,并且无法利用原始的源文件。 2.在 Remote Method Invocation(RMI) 的分布式风格中,这项功能听...
时茂盐酸: JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性.众所周知,属性名称符合这种模式,其他...
云溪区15936933363: Java 开发中 vo是什么,和po有什么不同,pojo又是什么?他们都是javabeen吗? - ?
时茂盐酸: 可以这么说他们都是JavaBean,只是在MVC模式中部同层次的叫法不一样
云溪区15936933363: javabean与vo有什么区别?? - ?
时茂盐酸: vo (value object)他是一个值对象 是由pojo+xml配置文件组成的(pojo古老的java对象只有getter和setter方法)xml是他对应的一些字段的映射vo一般都是用在数据持久上面的 你注意看许多的持久框架都是使用到了vo javaBean就多咯.....只要是个java类基本上都可以称为javaBean
云溪区15936933363: java中的POJO是什么意思? - ?
时茂盐酸: POJO(Plain Ordinary Java Object)是简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称.1、它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类. 2、POJO实质上可以理解为...
云溪区15936933363: Java项目,bean,biz,biz.imp,都写的什么? - ?
时茂盐酸: bean一般都是写一些传统Java bean,pojo,vo等.biz、biz.imp主要是写业务逻辑接口及实现,其中biz一般是接口或超类定义层,imp是具体实现层.现阶段项目开发定义,各公司定义不尽相同,有的叫service、service.impl===但大体意义堵相近的.有问题欢迎提问,满意请采纳,谢谢!
云溪区15936933363: pojo什么意思 - ?
时茂盐酸: POJO = "Plain Ordinary Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean.POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等. 即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口.
云溪区15936933363: Pojo和JavaBean的区别 - ?
时茂盐酸: 什么是POJO 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它.POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架...
云溪区15936933363: java项目的vo和pojo同时存在各有什么作用 - ?
时茂盐酸: 很高兴为您解答!1. 这两都是实体bean,一般是没有什么区别的;2. 还是要看编程人员向让他干什么用.希望对您有用!
云溪区15936933363: 什么是POJO - ?
时茂盐酸: 在Java应用程序中的角色 使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单...
云溪区15936933363: 关于javabean和DAO模式 - ?
时茂盐酸: JavaBean是数据的承载体,负责把一组有逻辑的数据从一个层传到另一个层. DAO的出现是对持久层的变动的一个解决方案. 对于不同的持久介质(RDBMS、XML、ODBMS等)、不同的提供厂商(Oracle、Mysql等)提供的产品,进行持久...