论坛首页 Java企业应用论坛

关于应用层次设计的讨论

浏览 17899 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-13  
ericchi 写道
crud0906 写道
结构2的意思是只使用一个BaseDao吗? sql或者hql都定义在xml中?还是都在业务逻辑里面?  之前项目一般都是一个实体的操作对一个DAO,当然也会抽象出BaseDao



恩,结构2的意思就是整个系统只使用一个baseDao。sql没有定义在xml,而是绑定到了业务逻辑层里,确切的说是每个Service中。


sql复用怎么办呢?楼主的项目是这个模式吗?
0 请登录后投票
   发表时间:2012-04-13  
crud0906 写道
ericchi 写道
crud0906 写道
结构2的意思是只使用一个BaseDao吗? sql或者hql都定义在xml中?还是都在业务逻辑里面?  之前项目一般都是一个实体的操作对一个DAO,当然也会抽象出BaseDao



恩,结构2的意思就是整个系统只使用一个baseDao。sql没有定义在xml,而是绑定到了业务逻辑层里,确切的说是每个Service中。


sql复用怎么办呢?楼主的项目是这个模式吗?



目前,我们的项目用的是结构2.但是我并不认为结构2是一个好的结构。
所以希望系统能够逐步的向结构1的方向调整和重构。

结构2,首先是sql和业务层耦合太高,降低了复用度;其次,对于维护和扩展也并不好。

所以,我把这个例子拿出来跟大家一起讨论。

我认为DAO层应该作为独立的一层,且每一个实体对应一个DAO。
DAO上层,应该是细粒度的服务层,提供一些细粒度的业务逻辑。
再上层是应用层,应用层提供一些具体的业务,可能几个细粒度的业务层,组织成一个应用层。
应用层之间可以相互调用,但两个应用层,不能够互相调用对方的细粒度业务层。

我个人认为,这样的层次才比较符合设计的一些原则。
0 请登录后投票
   发表时间:2012-04-13  
ericchi 写道
crud0906 写道
ericchi 写道
crud0906 写道
结构2的意思是只使用一个BaseDao吗? sql或者hql都定义在xml中?还是都在业务逻辑里面?  之前项目一般都是一个实体的操作对一个DAO,当然也会抽象出BaseDao



恩,结构2的意思就是整个系统只使用一个baseDao。sql没有定义在xml,而是绑定到了业务逻辑层里,确切的说是每个Service中。


sql复用怎么办呢?楼主的项目是这个模式吗?



目前,我们的项目用的是结构2.但是我并不认为结构2是一个好的结构。
所以希望系统能够逐步的向结构1的方向调整和重构。

结构2,首先是sql和业务层耦合太高,降低了复用度;其次,对于维护和扩展也并不好。

所以,我把这个例子拿出来跟大家一起讨论。

我认为DAO层应该作为独立的一层,且每一个实体对应一个DAO。
DAO上层,应该是细粒度的服务层,提供一些细粒度的业务逻辑。
再上层是应用层,应用层提供一些具体的业务,可能几个细粒度的业务层,组织成一个应用层。
应用层之间可以相互调用,但两个应用层,不能够互相调用对方的细粒度业务层。

我个人认为,这样的层次才比较符合设计的一些原则。


DAO应该是很轻的一层,主要是为了业务逻辑和db解耦。所以这层最好只考虑持久层的逻辑,不到不得已千万不要用存储过程实现业务逻辑。
1 请登录后投票
   发表时间:2012-04-13  
devroller2 写道
ericchi 写道
crud0906 写道
ericchi 写道
crud0906 写道
结构2的意思是只使用一个BaseDao吗? sql或者hql都定义在xml中?还是都在业务逻辑里面?  之前项目一般都是一个实体的操作对一个DAO,当然也会抽象出BaseDao



恩,结构2的意思就是整个系统只使用一个baseDao。sql没有定义在xml,而是绑定到了业务逻辑层里,确切的说是每个Service中。


sql复用怎么办呢?楼主的项目是这个模式吗?



目前,我们的项目用的是结构2.但是我并不认为结构2是一个好的结构。
所以希望系统能够逐步的向结构1的方向调整和重构。

结构2,首先是sql和业务层耦合太高,降低了复用度;其次,对于维护和扩展也并不好。

所以,我把这个例子拿出来跟大家一起讨论。

我认为DAO层应该作为独立的一层,且每一个实体对应一个DAO。
DAO上层,应该是细粒度的服务层,提供一些细粒度的业务逻辑。
再上层是应用层,应用层提供一些具体的业务,可能几个细粒度的业务层,组织成一个应用层。
应用层之间可以相互调用,但两个应用层,不能够互相调用对方的细粒度业务层。

我个人认为,这样的层次才比较符合设计的一些原则。


DAO应该是很轻的一层,主要是为了业务逻辑和db解耦。所以这层最好只考虑持久层的逻辑,不到不得已千万不要用存储过程实现业务逻辑。



赞同,DAO层只关注持久化的实现,不要渗入业务逻辑。
0 请登录后投票
   发表时间:2012-04-13  
cseu 写道
本人以为:
第一种适用于业务逻辑复杂的中大型项目,这样的项目特定于领域对象的DAO操作更多。这种方式层次清晰,低耦合,代码重用性更高。副作用是某些领域对象的业务逻辑层会非常薄,只是简单的调用DAO。
第二种适用于业务逻辑简单,绝大部分都是简单的CRUD的小型项目,简单的CRUD都可以使用泛型的BaseDAO完成,减少了“不必要”的薄业务逻辑的胶合代码。但这种方式耦合度高,正因为如此更适合几乎是CRUD的小型项目

PS:很久没看到这么接地气的帖子

我觉得这个兄弟,说的很有道理
第二种只能做业务逻辑非常简单的应用。否则一些复杂的查询必须要写在service里才能实现
如果是第二种,其实那个abstract service没有存在的必要的,service直接实现idao就ok了
0 请登录后投票
   发表时间:2012-04-13  
ericchi 写道
devroller2 写道
ericchi 写道
crud0906 写道
ericchi 写道
crud0906 写道
结构2的意思是只使用一个BaseDao吗? sql或者hql都定义在xml中?还是都在业务逻辑里面?  之前项目一般都是一个实体的操作对一个DAO,当然也会抽象出BaseDao



恩,结构2的意思就是整个系统只使用一个baseDao。sql没有定义在xml,而是绑定到了业务逻辑层里,确切的说是每个Service中。


sql复用怎么办呢?楼主的项目是这个模式吗?



目前,我们的项目用的是结构2.但是我并不认为结构2是一个好的结构。
所以希望系统能够逐步的向结构1的方向调整和重构。

结构2,首先是sql和业务层耦合太高,降低了复用度;其次,对于维护和扩展也并不好。

所以,我把这个例子拿出来跟大家一起讨论。

我认为DAO层应该作为独立的一层,且每一个实体对应一个DAO。
DAO上层,应该是细粒度的服务层,提供一些细粒度的业务逻辑。
再上层是应用层,应用层提供一些具体的业务,可能几个细粒度的业务层,组织成一个应用层。
应用层之间可以相互调用,但两个应用层,不能够互相调用对方的细粒度业务层。

我个人认为,这样的层次才比较符合设计的一些原则。


DAO应该是很轻的一层,主要是为了业务逻辑和db解耦。所以这层最好只考虑持久层的逻辑,不到不得已千万不要用存储过程实现业务逻辑。



赞同,DAO层只关注持久化的实现,不要渗入业务逻辑。


实际使用中,dao很难没有业务逻辑的因素在里面,特别是针对一些复杂的查询
0 请登录后投票
   发表时间:2012-04-13  
waveheart 写道
ericchi 写道
devroller2 写道
ericchi 写道
crud0906 写道
ericchi 写道
crud0906 写道
结构2的意思是只使用一个BaseDao吗? sql或者hql都定义在xml中?还是都在业务逻辑里面?  之前项目一般都是一个实体的操作对一个DAO,当然也会抽象出BaseDao



恩,结构2的意思就是整个系统只使用一个baseDao。sql没有定义在xml,而是绑定到了业务逻辑层里,确切的说是每个Service中。


sql复用怎么办呢?楼主的项目是这个模式吗?



目前,我们的项目用的是结构2.但是我并不认为结构2是一个好的结构。
所以希望系统能够逐步的向结构1的方向调整和重构。

结构2,首先是sql和业务层耦合太高,降低了复用度;其次,对于维护和扩展也并不好。

所以,我把这个例子拿出来跟大家一起讨论。

我认为DAO层应该作为独立的一层,且每一个实体对应一个DAO。
DAO上层,应该是细粒度的服务层,提供一些细粒度的业务逻辑。
再上层是应用层,应用层提供一些具体的业务,可能几个细粒度的业务层,组织成一个应用层。
应用层之间可以相互调用,但两个应用层,不能够互相调用对方的细粒度业务层。

我个人认为,这样的层次才比较符合设计的一些原则。


DAO应该是很轻的一层,主要是为了业务逻辑和db解耦。所以这层最好只考虑持久层的逻辑,不到不得已千万不要用存储过程实现业务逻辑。



赞同,DAO层只关注持久化的实现,不要渗入业务逻辑。


实际使用中,dao很难没有业务逻辑的因素在里面,特别是针对一些复杂的查询



嗯,所以说dao的独立是必要的,可以保证每个DAO具有独立的可操作性。
0 请登录后投票
   发表时间:2012-04-14  
不知道lz的sv层依赖于dao层是怎么封装的,所以不敢确定用哪个设计比较好
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics