SSH 整合- 4 - add service_servic…

来源:互联网 发布:隐写术算法 编辑:程序博客网 时间:2024/06/10 18:09

 

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) {

returnuserDAO.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

0 0