今天将service层的设计发送给大家,希望大虾们,多拍两下,service层还是基于抽象、泛型,以减少代码的冗余量.关于是否将DAO的顶级接口和Service的顶级接口合并,我认为单独存在,有利于层次的清晰.
service层接口:IBaseService.java
package com.frame.ssh.service.base;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* Service 层基接口,处理业务逻辑.这里只提供基本的操作增、删、查、改的方法.
*
*
* @author zjc
* @version 1.0
* @since 1.0
*/
public interface IBaseService<T,ID extends Serializable> {
/**
* 添加实体类
*
* @param entity:需要添加的实体类
* @return 无返回值
* */
Serializable saveEntity(final T entity);
/**
* 修改实体类
*
* @param entity:修改持久化的对象
* @return 实现序列化的对象
* */
Serializable updateEntity(final T entity);
/**
* 修改实体类
*
* @param entity:修改持久化的对象
* @return 实现序列化的对象
* */
void deleteEntity(final T entity);
/**
* 修改实体类
*
* @param entity:修改持久化的对象
* @return 实现序列化的对象
* */
T getEntity(final Class<T> clazz,final ID id);
/**
* 修改实体类
*
* @param entity:修改持久化的对象
* @return 实现序列化的对象
* */
List<T> findEntity(final Map<ID,T> conditionMap);
}
service 业务操作:
package com.frame.ssh.service.base;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import com.frame.ssh.dao.base.IBaseDao;
/**
* 抽象service类,service层重复的业务操作调用,可以减少代码的重复调用。
*
* @author zjc
* @version 1.0
* @since 1.0
*/
public abstract class AdstractBaseService<T,ID extends Serializable,GeneralDAO extends IBaseDao<T, ID>> implements IBaseService<T, ID> {
private GeneralDAO baseDao;
public void deleteEntity(T entity) {
baseDao.deleteEntity(entity);
}
@Override
public List<T> findEntity(Map<ID, T> conditionMap) {
return baseDao.findEntity(conditionMap);
}
@Override
public T getEntity(Class<T> clazz, ID id) {
return baseDao.getEntity(clazz, id);
}
@Override
public Serializable saveEntity(T entity) {
return baseDao.saveEntity(entity);
}
@Override
public Serializable updateEntity(T entity) {
return baseDao.updateEntity(entity);
}
}
student接口:
package com.frame.ssh.service;
import java.io.Serializable;
import com.frame.ssh.service.base.IBaseService;
/**
* Student业务操作接口
*
* @author zjc
* @version 1.0
* @since 1.0
*/
public interface IStudentService<T,ID extends Serializable> extends IBaseService<T, ID>{
}
student实现类:
package com.frame.ssh.service.implement;
import com.frame.ssh.bean.Student;
import com.frame.ssh.dao.implement.StudentDao;
import com.frame.ssh.service.IStudentService;
import com.frame.ssh.service.base.AdstractBaseService;
public class StudentService extends AdstractBaseService<Student, Integer,StudentDao> implements IStudentService<Student, Integer> {
}
本文介绍了一个基于Struts2、Spring和Hibernate(SSH)的技术框架中Service层的设计思路与实现方式,包括IBaseService接口定义及其实现类AdstractBaseService,通过泛型和抽象方法减少了代码冗余。
1247

被折叠的 条评论
为什么被折叠?



