1.实体类概述
1.1什么是实体类
众所周知实体类是在java开发中被应运到的,但是什么是实体类?
1.11实体类的定义
百度百科查阅说:实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。
1.12实体类的作用
实体类相当于是一个载体:
1.我们首先在idear中定义我们与数据库表相对应的实体类,这个实体类映射了我们数据库表里所对应的信息(很简单的解释就是我们的数据库里面的表是怎么设计的,有多少个属性,分别是什么类型,我们就在我们的idear中定义这样的一个实体类)
2.当我们要对目标表进行操作的时候,首先会将目标表对应的idear中的实体类的属性赋值然后传到后台。
3.后台就可以拿到目标表对应的对象的所有属性的值,(传递过来的是一个对象,里面带有所有属性的值)就不用一个个的传递参数了。
4.具体实现这种数据从前台到后台的联系可以通过框架,配置文件来进行实现。
ps:实体类合适的设计,能够很好的实现信息的隐蔽,使代码更加简洁,设计实体类的时候要慎重。
2.实体类定义规则
2.1 po类(entity):persistent object持久对象
有时候也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录,多个记录可以用PO的集合。
2.1.1注意的是:po中不能包含对任何数据库的操作。
- 1.2理解:PO对应数据库表,且数据库表会映射一个PO(java对象),一个PO就是数据库中的一条记录,我们这可以把这条记录作为一个对象处理,可以方便的转为其它对象;
2.2 vo类:value object表现层对象
2.2.1 主要对应页面显示(web页面/swt
,swing界面)的数据对象,他的对应对象可以是一个WEB页面,或者SWT、SWING的一个界面,通常用一个VO对象对应整个界面的值;
2.2.2 可以和表对应,也可以不,具体根据业务的需求
2.3 补充po与vo的区别:
2.3.1 VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方
2.3.2 VO是用new关键字创建,由GC回收的
2.3.3 VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称
2.3.4 PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁
2.3.5 PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换
2.3.6 PO的属性是跟数据库表的字段一一对应的
2.3.7 PO对象需要实现序列化接口
2.4 DTO(TO):Data Transfer Object 数据传输对象
传递view层显示的,我们需要的,client真正需要的字段。
ps:引用狂神大大的描述:比如一张表有100个字段,对应的PO就有100个属性(大多数情况下,DTO内的数据来自多个表)。但view层只需显示10
个字段,没有必要把整个PO对象传递到client,这时候我们就可以用只有这10个属性的DTO来传输数据到client,这样也不会暴露server端的表结构。到达客户端之后,如果用这个对象来对应界面显示,那此时它的身份就转为VO.
2.5 POJO:plain ordinary java object 无规则简单java对象
此对象我们就把他看做为了转化为PO,DTO,VO的中间对象
pojo持久化之后 —> PO
pojo作用表示层 —> VO
pojo 传输过程中 —> DTO
2.6 O/R Mapper : Object Relational Mapping:对象/关系 映射*
O/R Mapper可以通过mappings将生成的所有关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了
2.7 QO: Query Object:查询对象
存储一些与持久性查询操作的语句对象
例子:
主要作用是把service需要的属性封装为一个对象。
建立一个对应查询的的QO对象
这样进行查询时,我们就可以用QO去处理。增删改的时候通过下面方法去进行转化
BeanUtils.copyProperties(projuctQo,projuct);
2.8 BO:business object:业务对象
封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作 ;
例子:
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
2.9 TO Transfer Object:数据传输对象
应用程序不同关系之间传输的对象
3.0 DO Domain Object:领域对象
就是从现实世界中抽象出来的有形或无形的业务实体
实体类使用的经验:
1.记得加有参,无参构造
2.与数据库表的命名相同(要不然几十个表你找你要的字段根本找不到),千万不要少s,多s什么的
3.idear中小驼峰命名,数据库中才能出现_命名(数据库把__命名法会自动转化为小驼峰命名)
4.实体类有属性和方法,属性对应数据库中表的字段,方法主要有getter和setter方法
5.属性一般是private类型,方法为public类型,对于数据库自动生成的ID字段对应的属性的set方法为private
6.每个实体类都最好有自己的id字段
7.实体类应该实现java.io.Serializable接口