日期:2014-05-17  浏览次数:20714 次

java SSH关于service层接口定义

 最近自己弄一个项目,使用面向接口开发。项目说小也不小,总之需要维护好几年的。
 所以考虑到后面的拓展。
 分为:
 1、DAO层
 2、Service层
 3、视图层

 1、DAO层有专门的接口定义,叫ICommonDao。具体方法如下:
 

/**
 * <p>保存一个对象.</p>
 * @author Belen
 */
void save(T entity);

/**
 * <p>删除一个对象 。</p>
 * @author Belen
 */
void delete(T entity);

/**
 * <p>根据Collection批量删除。</p>
 * @author Belen
 */
void removeAll(Collection<T> entities);

/**
 * <p>修改一个对象.</p>
 * @author Belen
 */
void modify(T entity);

/**
 * <p>通过ID查询对象.</p>
 * @author Belen
 */
T findById(java.io.Serializable id);
 

 每个表有一个DAO接口,接口继承了ICommonDao。
 

 public interface IOperatorDao extends ICommonDao<Operator>{

Operator findOperatorByUsername(String username);

}
 

 
IOperatorDao 的实现类
 

public class OperatorDaoImpl extends CommonDaoImpl<Operator> implements
IOperatorDao {

public Operator findOperatorByUsername(String username) {
return null;
}
}

 


2、service层。
   也有自己的IBaseService接口,与IBaseDao接口差不多。
   1、现在我的问题是,需要一个表定义一个业务service吗?
   2、如果一个service同时操作多张表,这个service该如何定义?
   3、有相关这方面架构的博文也可提供看一下,万分感谢!
  

------解决方案--------------------
这个没有办法,hibernate本来一次就只能取一个表的数据,但是你的表之间是有关联的,取出一个表等于取了了跟他关联的所有数据,但这样有一些不好的就是加载的东西太多,虽然用的持久化框架可以很快的解决,但是等你应用的时候就会发现,原来这个东西不能这样搞,还是使用jdbc的方式来的直接,直接逻辑关联就是了,用框架自带的辉走向坟墓的,在用数据的时候还是用自定义标签来解决就是,你说面向接口开发,本来就是这样的,你定义了接口,我不计较你是用什么方式实现我的功能,只要性能达标,功能达标就OK,这就是面向接口编程了嘛
------解决方案--------------------
service是业务层, 根据业务功能划分的. 

你业务共功需要操作几个表,需要几个dao完成业务功能都是不确定的
------解决方案--------------------