浏览 3750 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-01
最后修改:2010-08-24
springside3.1.2通过在service中注入sessionFactory的方式,间接new出来任何daomain的Dao,这样的方式我觉得不是很好,但是我仍然保留了泛型dao的这个能力。代码片段如下: public GenericDao(SessionFactory sessionFactory, Class<T> entityClass) { super(sessionFactory); this.entityClass = entityClass; } 上述方式提供的灵活性,但是我认为造成了分层混淆,既然service有了直接获取sessionFactory的能力,还需要Dao层干什么,直接把service和dao合并成一层,只保留service层就可以了(这样的做法很多人在实际项目中就是这么干的,简单直接有效,有的童鞋认为这种方式是最佳实践)。 为什么要搞个万能UniversalDao?想偷懒撒。 现有简单的对象User,Role,Group,都搞一遍UserDao,RoleDao,GroupDao,由于功能简单,都是空的,这样的dao就用一个UniversalDao搞定得了,调用方法的时候把class穿进去就可以了,干脆! 如get方法 public Object get(Class<?> clazz, Serializable id) { return this.getSession().get(clazz,id); } 对于规模小的系统,复杂的方法都搞到service中,Dao层我认为OnlyOneDao一个就够了。 代码写出来了,用起来也不错,但是万能UniversalDao的优点、缺点也是很明显的,而且里面的方法相当于重复了BaseDao,使用的时候可能造成困惑,无奈的折中。当然,如果直接使用“涨血模型”,把Service、Dao能力都合并进domain最是彻底,但是Java里面实现起来还是太复杂、难看。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-01
改为继承HibernateDaoSupport 就完美了
|
|
返回顶楼 | |
发表时间:2010-01-15
------------父类
protected Class<?> entityClass; -------------子类 public Object get(Class<?> clazz, Serializable id) { this.entityClass = clazz; return get(id); } LZ有没有想过多用户环境下线程安全问题呢? |
|
返回顶楼 | |
发表时间:2010-01-15
确实还没有仔细想过线程安全的问题,但是这里需要线程安全么,请详细说说。
|
|
返回顶楼 | |