读书人

关于dao service层设计的经验

发布时间: 2012-11-03 10:57:43 作者: rapoo

关于dao service层设计的心得



那么由此我们可以推出什么呢?这个例子能够得出什么结论呢?

凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行

1 楼 huangpengxiao 2007-09-06 引用凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行

这个部分的扩展?

BaseDAOHibernate implements DAO?

如果这个算纵向? 横向是.....? 2 楼 xly_971223 2007-09-06 huangpengxiao 写道引用凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行

这个部分的扩展?

BaseDAOHibernate implements DAO?

如果这个算纵向? 横向是.....?
横向是UserDao 对接口进行扩展 3 楼 jameswei 2007-09-06 来学习了 4 楼 jive 2007-09-26 有点模糊,结合点小实例看看

我看好多范型DAO也都是这样设计的 5 楼 gordonAtJava 2007-09-26 应该是Dao/BaseDAOHibernate是对所有对象crud的操作都能工作的,其中crud某些方法的参数会包括Class cls. UserDao/UserDaoHibernate是专门针对user类的,这个的crud是不需要传入Class的,比如直接给id或者条件就好,不需要User.class,这样的封装对于使用UserDao的代码会好些

Dao可能的方法
public T findById(Class<T> cls,Long id)

对应的UserDao的方法
public User findById(Long userId)
6 楼 yanq12 2007-09-30 请的不够清楚 7 楼 foxgst 2007-09-30 纵向是实现方式上的扩展,比如采用多种方式实现;横向是功能上的扩展,继承多个接口实现扩展。 8 楼 hyhongyong 2007-09-30 不错,UserDao是接口扩展,BaseDAOHibernate是抽象类扩展。 9 楼 vlinux 2007-10-04 我的做法是首先让Entity全部都实现一个空接口 Entityable

然后定义基Dao接口

public interface BaseDao<T extends Entityable> {

T find(Object primaryKey);
void create(T t);
void modify(T t);
void delete(T t);

}

然后其他子接口一律继承BaseDao<T>

public interface AccountDao extends BaseDao<Account> {

}



实现的时候BaseDao用BaseDaoImpl去实现
而AccountDao则用AccountDaoImpl extends BaseDaoImpl implements AccountDao去实现

不知道这样的做法是否合理呢~ 10 楼 williamy 2007-10-10 把基本操作泛化就可以了,ibm developers上好像是03 04的文章 11 楼 realorg 2007-11-08 gordon@java 写道应该是Dao/BaseDAOHibernate是对所有对象crud的操作都能工作的,其中crud某些方法的参数会包括Class cls. UserDao/UserDaoHibernate是专门针对user类的,这个的crud是不需要传入Class的,比如直接给id或者条件就好,不需要User.class,这样的封装对于使用UserDao的代码会好些

Dao可能的方法
public T findById(Class<T> cls,Long id)

对应的UserDao的方法
public User findById(Long userId)


确实,偶也觉得应当这样理解比较合适。 12 楼 yangdefeng95802 2007-11-22 realorg 写道gordon@java 写道应该是Dao/BaseDAOHibernate是对所有对象crud的操作都能工作的,其中crud某些方法的参数会包括Class cls. UserDao/UserDaoHibernate是专门针对user类的,这个的crud是不需要传入Class的,比如直接给id或者条件就好,不需要User.class,这样的封装对于使用UserDao的代码会好些

Dao可能的方法
public T findById(Class<T> cls,Long id)

对应的UserDao的方法
public User findById(Long userId)


确实,偶也觉得应当这样理解比较合适。好像有这个! 13 楼 seablue_xj 2007-12-01 我觉得还是加入service层比较好,如果是能大量使用的业务,责将业务假如到dao层,将dao层设计成富模式,相反,如果不是大量使用的,则将业务设计到service层中,dao层中使用贫血设计模式, 14 楼 sifeng618435 2007-12-05 UserDaoHibernate extends BaseDAOHibernate implements UserDao这里是不是有点怪
BaseDAOHibernate 已经实现了UserDao了,
UserDaoHibernate 实现UserDao就不用了吧 15 楼 cindy_taozhiang 2008-03-28 seablue_xj 写道我觉得还是加入service层比较好,如果是能大量使用的业务,责将业务假如到dao层,将dao层设计成富模式,相反,如果不是大量使用的,则将业务设计到service层中,dao层中使用贫血设计模式,



嗯. 这种想法不错 16 楼 eccojap 2008-04-04 晕,我的想法跟搂主不谋而合,看来我进步了,呵呵
只不过我的出发点是节省开发时间,自己写个脚本,可以由Bean自动生成
UserDao和UserDAOHibernate 17 楼 fantasybei 2008-08-29 sifeng618435 写道UserDaoHibernate extends BaseDAOHibernate implements UserDao这里是不是有点怪
BaseDAOHibernate 已经实现了UserDao了,
UserDaoHibernate 实现UserDao就不用了吧

BaseDAOHibernate 只实现了DAO,没有实现UserDAO 18 楼 bluemeteor 2008-08-29 ecsun 写道泛型 DAO有很多开源项目实现在很好,比如我们熟悉的 Appfuse2.0, SpringSide,以及bba96等,都做了很好的实现,我们完全可以拿来主义嘛.不过做人要厚道啊,拿来用可以,要"守法"啊~~~~~~~~


泛型DAO可以理解为是一种简单、明了的设计模式,没有什么守法的问题.

读书人网 >软件架构设计

热点推荐