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

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

  • 相关阅读:
    iOS-MVC设计模式
    LoadRunner中文转码
    LoadRunner中Base64编码解码
    jmeter持续集成化(一)---jmeter+Ant+DOS构建执行脚本
    LoadRunner MD5加密
    Jmeter元件--BeanShell Timer
    ftp上传下载
    Shell编程实例
    Oracle数据库sqlplus操作
    oracle执行计划分析
  • 原文地址:https://www.cnblogs.com/ubuntuvim/p/4796552.html
Copyright © 2011-2022 走看看