各层之间的常用框架
项目分层使得各层之间解耦,开发更灵活。
随之各层之间出现了不同的框架,更加方便快速的开发。
表示层的框架:struts2、SpringMVC
业务层框架:Spring
dao层框架:mybaties、hibernate
这是现如今两种主流架构:SSM(sringmvc+spring+mybaties)和SSH(struts2+spring+hibernate)
mvc
表示层的MVC架构是指(Model +view+controller)这样开发更灵活,快速。
model(是指数据对象,我们将数据封装进对象里,方便各层之间传递)
view(是指页面,包括jsp、html、css、javascript以及页面上的图片、视频等)
controller(是指controller控制器,负责请求处理,页面转发等)
分类
service:
业务层
action
控制器层
DAO(Data Access Object)
数据访问层
Action层,Service层,Model层和Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构。
一般java都是三层架构 数据访问层(dao) 业务逻辑层(biz 或者services) 界面层(ui)
Service(biz)层:
引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。
action控制器层:
是业务层的一部分,是一个管理器 (总开关)(作用是取掉转)(取出前台界面的数据,调用biz方法,转发到下一个action或者页面)。
model模型层:
一般是实体对象(把现实的的事物变成java中的对象)作用是一暂时存储数据方便持久化(存入数据库或者写入文件)而是 作为一个包裹封装一些数据来在不同的层以及各种java对象中使用
dao数据访问层 :
就是用来访问数据库实现数据的持久化(把内存中的数据永久保存到硬盘中 ).使用了Hibernate连接数据库、操作数据库(增删改查)。
java中dao层和biz层的区别
我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。 接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。
什么是pojo类?
简单的Java对象(Plain Old Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接.
其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
pojo类和vo类的区别
vo有两种说法,一个是viewObject,一个是valueObject..
从前者来说,它只负责封装页面传递过来的数据,这和PO有些不同..
就拿struts1来说,ActionForm就是一个典型的viewObject. 而valueObject是页面与页面之间的传递时保存值的对象....
总的来说,PO是最终传给BO以及BO传个DAO的东西,他很多情况下与我们真正的数据库表想对应.
而viewObject是一个页面上提交后的数据,不一定完全和PO的属性相同....
PO,VO,TO,BO,DAO,POJO的解释
PO:
persistant object持久对象
PO可以严格对应数据库表,一张表对映一个PO。
也可以对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作.
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。
可以看成是与数据库中的表相映射的java对象。
最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
BO:
business object:业务对象
主要作用是把业务逻辑封装为一个对象。
从业务模型的角度看,见UML元件领域模型中的领域对象。
封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。
这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。
VO :
value object值对象
ViewObject表现层对象主要对应界面显示的数据对象。
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。
但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。
对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。
TO:
Transfer Object,数据传输对象
在应用程序不同tie(关系)之间传输的对象
DTO :
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
POJO :
plain ordinary java object 简单java对象
个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。
就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法!。
一个POJO持久化以后就是PO直接用它传递、传递过程中就是DTO直接用来对应表示层就是VO
DAO:
data access object数据访问对象
这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO
是一个sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负持久层的操作。
为业务层提供接口。此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操作...
O/R Mapper
对象/关系 映射
定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作。
通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了。