javaweb业务层应该如何写

介绍

这篇文章主要介绍了javaweb业务层应该如何写,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

, <>强业务层

<强>服务层:强引用对应的刀数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。

服务层是调用各种道的业务操作,比如你有一个业务是添加,然后修改。那么你分别调用刀的添加和修改操作,包括里面的一些数据转换,逻辑判断都放到服务层,刀只是单纯的增删改查。而且事务一般会放到服务层。
<强>其中服务层和Dao层由于可能都会对数据库进行操作,其具体区别为:

<强>刀和服务对应

一般情况下,Hibernate刀只操作一个POJO对象,因此一个刀对应一个POJO对象。服务层是为了处理包含多个POJO对象(即对多个表的数据操作)时,进行事务管理(声明式事务管理).Service层(其接口的实现类)被注入多个刀对象,以完成其数据操作。

<强>服务之有无
<强>这一点我的看法未必正确,我的脑海现在有两种构建业务层的模式:
模式1是服务+刀,即刀中只做CRUD及类似的简单操作(称之为功能点,不包含业务逻辑),服务中通过调用一个或多个Dao中的功能点来组合成为业务逻辑。服务的数量应该由功能模块来决定。
在这种模型中业务逻辑是放在服务中的,事务的边界也应该在服务中控制。当然,直接在服务中控制事务会引入非业务逻辑的代码,幸好Spring的AOP可以解决这个问题,这也是引入春天的原因之一。
如果说到缺点,就在于对某些对象的操作就是简单的CRUD,服务层显得累赘。

模式2是服务+波,而薄熙来=刀+业务方法,在原先DAO的基础上添加业务方法,形成BO对象。需要注意的是博中的业务方法往往是针对一个实体对象的,如果需要跨越多个实体对象,则方法应该放在服务中。<强>

<强>举例来说,

一个简单的银行帐户管理系统,创建帐户这个BO对象,里面可以有修改密码,取钱等业务方法(不难看的出,这些方法都只对单个帐户对象进行操作)。现在需要添加一个转账方法,就应该放在服务中。

<强>这里服务和BO的关系是什么样的呢?再举一例:

以国家行政机关为例:粮食局负责收粮,卖种子等,建设部负责审批土地买卖,建设公路等,这都是行政部分份内的事儿。突然某地发了水灾,救灾时需要粮食局开仓放粮,建设部修建临时房屋,如何协调两个部门?就需要成立专门的救灾委员会,由救灾委员会出面对两个部分的资源进行调拨。这里两个部分就是薄熙来,而救灾委员会就是服务。不知我的意思是否表达准确了,呵呵。模式1的在划分服务和刀时界限清晰,但会带来一些无必要的代码。模式2的划分相对复杂,然而可以提高编码效率。

当然小规模的应用中,没有服务,完全是刀或BO也是可以接受的。

<强>服务和刀的接口之有无

接口是一种契约,它可以有多种实现,所以接口之有无取决于具体实现是否需要多样化。如果铁定一种刀或一种服务只有一种实现,那么抽象出接口的意义不大,然而一些大型应用或许需要刀和服务的多种实现(比如上面例子中的帐户刀,可能需要一种Hibernate实现,一种CMP实现和一种JDO实现),为了向上一层隐藏具体实现类,需要采用接口。

隐藏具体实现类的创建过程,这有两种方法:一是实用工厂方法,代价是代码量大(每个刀和服务一个工厂)。二是使用Spring的IoC,实现依赖注入,不需要写额外的代码,这也是引入春天的理由之二。

感谢你能够认真阅读完这篇文章,希望小编分享javaweb业务层应该如何写内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

javaweb业务层应该如何写