• SSH 整合- 4 - add service_servic…


     

    1. 工程结构

     

    SSH <wbr>整合- <wbr>4 <wbr>- <wbr>add <wbr>service_serviceImpl+dao_daoImpl

    工程文件的命名不是很规范,在这暂时不是最重要的,望见谅。呵呵。。。

    2. 流程图

     

    SSH <wbr>整合- <wbr>4 <wbr>- <wbr>add <wbr>service_serviceImpl+dao_daoImpl

    在这一步中我们没有添加其他复杂的配置,其他的内容,只是把service和dao层分解了以下,把它们分为实现和接口。在使用的时候我们只要调用它们的接口,而具体的功能放在了实现里。为什么要面向接口编程,http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599700.html

    3. UserManager.java


    package com.edu.ssh.service;

     

    import com.edu.ssh.model.User;

     

    public interface UserManager {

     

     

    public abstract boolean exists(User user);

     

    public abstract void insertOneUser(User user);

     

    }

     

    4. UserManagerImpl.java

    package com.edu.ssh.service.impl;

     

    import com.edu.ssh.dao.UserDAO;

    import com.edu.ssh.dao.impl.UserDAOImpl;

    import com.edu.ssh.model.User;

    import com.edu.ssh.service.UserManager;

     

    public class UserManagerImpl implements UserManager {

     

     

    private UserDAO userDAO = new UserDAOImpl();

     

     

    public UserDAO getUserDAO() {

    return userDAO;

    }

     

     

    public void setUserDAO(UserDAO userDAO) {

    this.userDAO = userDAO;

    }

     

     

    public boolean exists(User user) {

    return userDAO.checkUserExistsWithName(user.getUsername());

    }

     

     

    public void insertOneUser(User user) {

    userDAO.save(user);

    }

    }

     

     

    5. UserDAO.java

    package com.edu.ssh.dao;

     

    import com.edu.ssh.model.User;

     

     

    public interface UserDAO {

    public void save(User user);

    public boolean checkUserExistsWithName(String username);

    }

     

     

    6. UserDAOImpl.java

    package com.edu.ssh.dao.impl;

     

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

     

    import com.edu.ssh.dao.UserDAO;

    import com.edu.ssh.model.User;

    import com.edu.ssh.util.HibernateUtil;


    public class UserDAOImpl implements UserDAO {

     

     

    @Override

    public void save(User user) {

    // save in database

    SessionFactory sf = HibernateUtil.getSessionFactory();

    Session session = sf.getCurrentSession();

    session.beginTransaction();

    session.save(user);

    session.beginTransaction().commit();

    }

     

     

    @Override

    public boolean checkUserExistsWithName(String username) {

    SessionFactory sf = HibernateUtil.getSessionFactory();

    Session session = sf.getCurrentSession();

    session.beginTransaction();

    long count = (Long) session.createQuery(

    "select count(*) from User u where u.username = :username")

    .setString("username", username).uniqueResult();

     

    session.beginTransaction().commit();

     

    if (count > 0)

    return true;

    return false;

    }

     

    }

     

     

    7. UserManagerTest

    package com.edu.ssh.service;

     

    import static org.junit.Assert.assertTrue;

    import static org.junit.Assert.fail;

     

    import org.junit.Before;

    import org.junit.Test;

     

    import com.edu.ssh.model.User;

    import com.edu.ssh.service.impl.UserManagerImpl;

     

    public class UserManagerTest {

     

    private UserManager userManager = null;

     

    @Before

    public void setUp() {

    userManager = new UserManagerImpl();

    }

     

     

    @Test

    public void testExists() {

    User user = new User();

    user.setUsername("ee");

    assertTrue("userManager.exists(user) 失败了!!", userManager.exists(user));

    }

     

     

    @Test

    public void testInsertOneUser() {

    User user = new User();

    user.setUsername("username1");

    user.setPassword("password1");

    if (userManager.exists(user)) {

    fail("要添加的用户已经存在!!");

    } else {

    userManager.insertOneUser(user);

    assertTrue(userManager.exists(user));

    }

    }

     

    }

     

     

    8. 结果

     

    SSH <wbr>整合- <wbr>4 <wbr>- <wbr>add <wbr>service_serviceImpl+dao_daoImpl

     

     

     

    SSH <wbr>整合- <wbr>4 <wbr>- <wbr>add <wbr>service_serviceImpl+dao_daoImpl

     

    添加相同的用户是要报错!!

     

    SSH <wbr>整合- <wbr>4 <wbr>- <wbr>add <wbr>service_serviceImpl+dao_daoImpl

     

    9. 分析

    为什么要面向接口编程:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599700.html

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    推荐.Net、C# 逆向反编译四大工具利器
    逆向工具/反编译工具 集合
    秒杀系统-并发处理
    react动态渲染组件
    通过dom获取react节点
    mac上安装windows触摸板不能右键
    STM32F103智能配网mqtt协议EMQ安卓App远程控制LED采集温湿度ESP8266
    itop4412 基于物联网技术的商品支付系统 毕业设计
    STM32F103 单片机最小系统 核心板 C8T6 MINI 飞控 小车 主控制板
    31865 MAX31865 RTD铂电阻温度检测器 PT100至PT1000传感器模块
  • 原文地址:https://www.cnblogs.com/ubuntuvim/p/4796552.html
Copyright © 2020-2023  润新知