您的位置:首页 > 其它

SSH 整合- 4 - add service_servic…

2015-09-09 10:03 134 查看



1. 工程结构



整合- 4 - add service_serviceImpl+dao_daoImpl" TITLE="SSH 整合- 4 - add service_serviceImpl+dao_daoImpl" />


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



2. 流程图



整合- 4 - add service_serviceImpl+dao_daoImpl" TITLE="SSH 整合- 4 - add 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. 结果



整合- 4 - add service_serviceImpl+dao_daoImpl" TITLE="SSH 整合- 4 - add service_serviceImpl+dao_daoImpl" />




整合- 4 - add service_serviceImpl+dao_daoImpl" TITLE="SSH 整合- 4 - add service_serviceImpl+dao_daoImpl" />


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



整合- 4 - add service_serviceImpl+dao_daoImpl" TITLE="SSH 整合- 4 - add service_serviceImpl+dao_daoImpl" />




9. 分析

为什么要面向接口编程:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599700.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: