一般DAO都是根据实体走的,一个实体一个DAO,项目的DAO都是统一的,由一个人统一定制,然后各模块的人把需要的dao接口引入到各自的模块service里。
大家都是这么做的吗?但是如果项目大了,一个人管理不了各个dao吧。如果有多个人负责dao接口,如果协调防止dao方法的重复也是个问题啊。

解决方案 »

  1.   

    这个. 有必要写这么多吗?
    你们不提倡写个通用的吗?
    找个老手写个通用的,都不用人去管DAO!
      

  2.   

    你一个模块一个spring配置文件可以
    分别配置相应的配置
      

  3.   

    通用的?一个通用DAO里有成百上千的方法?
      

  4.   

    把CRUD这些通用的操作放在这个DAO里面,然后每个模块的DAO继承此通用DAO就可以了。像这样
    IDAO.javapackage org.xiong.demo.dao;import java.util.List;public interface IDAO<T, K>
    {
    public boolean doInsert(T vo) throws Exception; public boolean doUpdate(T vo) throws Exception; public boolean doDelete(K id) throws Exception; public T findById(K id) throws Exception; public List<T> findAll(String keyword) throws Exception; public List<T> findAll(String keyword, int currentPage, int lineSize)
    throws Exception; public long getAllCount(String keyword) throws Exception;}INewsDao.javapackage org.xiong.demo.dao;import java.util.List;import org.xiong.demo.vo.News;public interface INewsDao extends IDAO<News, Integer>
    {
    public List<News> findAllByLockflag(String keyword, int currentPage, int lineSize,
    int lockflag) throws Exception; public long getAllCountByLockflag(String keyword, int lockflag) throws Exception;
    }
      

  5.   


    你们的DAO里面有很多复杂的逻辑、奇怪的方法吗??
      

  6.   

    这个结构上好了点,不过说到底还是针对于一个实体一个dao啊。INews可能被多个模块(Service)调用的,每个模块是由不同的人做的。这样DAO依旧没法各自协调啊。
      

  7.   


    通用的DAO就写些普通的操作,具体的逻辑到Service层写!
    如果你硬是要扩展DAO,就自己去继承通用DAO,这样就灵活多了!
    还想问下 你的DAO要各自协调什么??
      

  8.   


    至于你的一个实体对应一个DAO的问题,你可以把实体当作参数传入通用DAO,用通用DAO来解析!
      

  9.   

    比如说有两个dao,UserDao和AuthorDao,撇开通用方法,UserDao有特有方法A, AuthorDao有特有方法B,AB方法还是由统一写Dao的人写吧,AB方法不能让UserService模块或者AuthorService模块的人写在Service里吧。如果有很多个dao,每个dao里有若干特别方法,这些东西都由那个写Dao的人做岂不是工作量很大?最后,不管怎样,模块人员肯定不能去写dao方法的吧。
    小弟不才,想问下有团队经验的人的开发习惯。
      

  10.   


    首先说下,我确实没多少团队开发经验!!
    但是我想请问下楼主,能不能给我举个除了增删改查、执行sql之外的特殊方法的例子给我!!
    谢谢了!
      

  11.   

    不是特殊的意思,比如UserDao里有个按照注册日期查询的方法,而AuthorDao里没有,这显然不能通用Dao吧。
      

  12.   

    Dao<T>
       insert
       delete
       update
       get
       list
       getTotalBasicDao<T> implements Dao<T>
       //一些protected方法UserDao extends Dao<User>
       //DAO的方法不够就扩展UserDaoImpl extends BasicDao<User> implements UserDao
      

  13.   

    比如有两个模块。都需要用到和User相关的Dao方法,这些方法都是由一个管理dao的人统一写?你这种写法貌似除了结构好没区别啊。我的问题是当多个模块需要和某个Dao联系时,谁来管理dao的修改。
      

  14.   


    我的个天啊..
    你到底有没有考虑通用方法啊!!
    哪个查询不是带入一条sql啊,拼装sql你交给service或者action去拼,DAO只管查询跟将结果封装成你想要的对象不就行了么..
    难不成你们以前都是一个实体对应一个DAO吗??
      

  15.   

    恩,无论怎样sql都是在dao里做的啊sql放到service还勉勉强强,放到action里那层次就乱了,action应该尽量进行业务判断。
      

  16.   

    所有的dao都交由一个人管理,负责写dao的方法?不是分模块分给不同的人写dao?
      

  17.   

    写那么多dao做嘛,需要时再写呗
      

  18.   

    我不是来灌水的关于DAO,做个项目就知道了关键字:抽象、继承、重写、模块化……
      

  19.   

    Dao应该跟着实体类而不是模块吧。