zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    linux内核中GNU C和标准C的区别
    linux内核中GNU C和标准C的区别
    Getting start with dbus in systemd (02)
    Getting start with dbus in systemd (01)
    Getting start with dbus in systemd (03)
    物理内存相关的三个数据结构
    数据类型对应字节数(32位,64位 int 占字节数)
    Linux kernel 内存
    共模电感的原理以及使用情况
    [原创]DC-DC输出端加电压会烧毁
  • 原文地址:https://www.cnblogs.com/ubuntuvim/p/4796552.html
Copyright © 2011-2022 走看看