Spring集成Hibernate5 , 现在需要整合Strtus2, 这就必须考虑Service层,
分层设计,通常是分成4个层
- viewer(页面显示)
- servie(用来做整个项目的逻辑控制 , 对象判断)
- dao(仅仅做数据库的基本操作)
- data(数据库)
以前: viewer直接调用dao层
现在: 在dao层上添加一个service层, service 层进行异常处理, 以及判断等操作, dao层 什么都不做, 只完成对数据库的处理, 不做任何判断和异常处理。
二、Service层实现流程
2.1、添加Service层, 创建IUserService接口, 定义service层方法, 这些方法就是Viewer层的功能点的具体实现
package com.chb.spring_hibernate.service;
import java.util.List;
import com.chb.spring_hibernate.model.User;
/**
* service 进行对象的操作, 异常处理, 和判断功能,
* service层的每个方法都是viewer层的一个功能点。
* @author 12285
*/
public interface IUserService {
public void add(User user, int gid);
public void delete(int id);
public void update(User user);
public void load(int id);
public List listAllDao();
/**
* 获取组成员
* @param id
* @return
*/
public List listByGroup(int gid);
}
2.2.1 实现IUserService, service的注解为@Service
@Service //为Spring所管理
public class UserService implements IUserService
2.2.2 service层通过Dao层进行数据库操作, 所以需要注入UserHibernateDao
//UserService通过UserDao进行数据库操作, 需要注入UserDao
private IUserDao userHibernateDao;
//注入UserHibernateDao
@Resource
public void setUserHibernateDao(IUserDao userHibernateDao) {
this.userHibernateDao = userHibernateDao;
}
public IUserDao getUserHibernateDao() {
return userHibernateDao;
}
2.2.3、UserDao中的特殊方法放在service层操作,
add(User user, int gid)
, 需要判断, gid的组是否存在, 所以需要注入GroupHibernateDao,
listByGroup
来获取组中用户, 但是获取的是对象, 为了效率, 可以在UserDao中提供一个方法获取gid组中用户数