论坛首页 Java企业应用论坛

业务层代码复用的一点建议

浏览 31936 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-07-29  
楼主,我服了你了,你的方法命名居然和我们公司的一样

	Pager<T> findBySQL(final int pageNo, final int pageSize, final String sqlString, final Object... values);
	
	
	Pager<T> findByHQL(final String hql, final Object... values);
0 请登录后投票
   发表时间:2010-07-29  
把接口IBaseDao设计成泛型不是更好吗?
0 请登录后投票
   发表时间:2010-07-29  
mercyblitz 写道
把接口IBaseDao设计成泛型不是更好吗?

当然可以了
0 请登录后投票
   发表时间:2010-07-29  
skzr.org 写道
我自己就是这样做的,本着dao只做存储的思想
一个service对应N个dao
public interface IBaseDao {
	void saveOrUpdate(Object entity);
	
	@SuppressWarnings("unchecked")
	void saveOrUpdateAll(Collection entities);
	
	void delete(Object entity);
	
	<T> List<T> loadAll(Class<T> entityClass);
	
	<T> T get(Class<T> entityClass, Serializable id);
}

实现:
public class BaseDaoHibernateImpl extends HibernateDaoSupport implements IBaseDao {
	@Autowired
	public final void setupSessionFactory(SessionFactory sessionFactory) {
		setSessionFactory(sessionFactory);
	}

	@Override
	public void saveOrUpdate(Object entity) {
		getHibernateTemplate().saveOrUpdate(entity);
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public void saveOrUpdateAll(Collection entities) {
		getHibernateTemplate().saveOrUpdateAll(entities);
	}
	
	@Override
	public void delete(Object entity) {
		getHibernateTemplate().delete(entity);
	}
	
	@Override
	public <T> List<T> loadAll(Class<T> entityClass) {
		return getHibernateTemplate().loadAll(entityClass);
	}
	
	@Override
	public <T> T get(Class<T> entityClass, Serializable id) {
		return getHibernateTemplate().get(entityClass, id);
	}
	
}

恩 不错的
0 请登录后投票
   发表时间:2010-07-29  
从重构的角度来说 代码量越少越好 从可读性来讲是层次分明 清晰越好 权权平衡 两者都是可取的 我认为
0 请登录后投票
   发表时间:2010-07-29  
冬天冷穿马甲 写道
maozj 写道
从重构的角度来说 代码量越少越好 从可读性来讲是层次分明 清晰越好 权权平衡 两者都是可取的 我认为

楼主的帖子实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐
风宋骨发扬得入木三分,能在有生之年看见楼主的这张帖子,实在是我三生之幸
啊。
看完楼主的这张帖子之后,我竟感生出一种无以名之的悲痛感?啊,这么好的
帖子,如果将来我再也看不到了,那我该怎么办?那我改怎么办?直到我毫不犹豫
的把搂主的这张帖子收-藏-了,我内心的那种激动才逐渐平复下来。可是我立刻想
到,这么好的帖子,倘若别人看不到,那不是浪费楼主的心血吗?
经过痛苦的思想
斗争,我终于下定决心,我要把这张帖子一直往上顶,往上顶!顶到所有人都看到
为止!


不好意思·这不是百度贴吧,呵呵
0 请登录后投票
   发表时间:2010-07-29  
基础表dao都类似这样 
public class SuserHibernateDao  extends GenericHibernateDao<Suser,java.lang.Integer> implements ISuserDao {
	
}

一行代码都不用写...
0 请登录后投票
   发表时间:2010-07-30  
xiaobao0501 写道
基础表dao都类似这样 
public class SuserHibernateDao  extends GenericHibernateDao<Suser,java.lang.Integer> implements ISuserDao {
	
}

一行代码都不用写...

0 请登录后投票
   发表时间:2010-07-30  
gstarwd 写道
xiaobao0501 写道
基础表dao都类似这样 
public class SuserHibernateDao  extends GenericHibernateDao<Suser,java.lang.Integer> implements ISuserDao {
	
}

一行代码都不用写...


不过却产生了N多的DAO
我一般模块内表不多时,只有一个DAO就可以了
如果模块内表数量膨胀到5个以上,才会考虑是不是要使用多个dao!
0 请登录后投票
   发表时间:2010-07-30  
dao层还是根据表来建吧.具体如何组合是service层的事. 
0 请登录后投票
论坛首页 Java企业应用版

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