Spring集成Hibernate5_04-Service层

来源:互联网 发布:海龙设计软件 编辑:程序博客网 时间:2024/06/06 03:53

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<User> listAllDao();    /**     * 获取组成员     * @param id     * @return     */    public List<User> 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层操作,

这里写图片描述

2.2.4、实现add(User user, int gid), 需要判断, gid的组是否存在, 所以需要注入GroupHibernateDao,

这里写图片描述

2.3、GroupService 实现,
  在删除一个Group, 如果删除的组中有关联用户, 将删除失败, 所以需要判断组中是否有用户,
  但是只有在UserService中有listByGroup来获取组中用户, 但是获取的是对象, 为了效率, 可以在UserDao中提供一个方法获取gid组中用户数

这里写图片描述

2.3.1、在GoupService中通过UserDao判断组中用户

这里写图片描述

2.4 加入Service层的好处, 未加入Service层, GroupDao和UserDao会产生相互嵌套, 导致问题。

这里写图片描述