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完成业务功能都是不确定的
------解决方案--------------------