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

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

  • 相关阅读:
    1.C和C++区别,以及const分析(底层const/顶层const)
    4.移植驱动到3.4内核-移植总结
    3.移植驱动到3.4内核-移植DM9000C驱动
    2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁
    Android Support v4、v7、v13、v14、v17的区别和应用场景
    Android利用canvas画各种图形
    ActionBar 自定义布局定义
    android动画坐标定义
    GitHub上最著名的Android播放器开源项目大全
    CardView 简介和使用
  • 原文地址:https://www.cnblogs.com/ubuntuvim/p/4796552.html
Copyright © 2011-2022 走看看