SSH 整合- 4 - add service_servic…
来源:互联网 发布:隐写术算法 编辑:程序博客网 时间:2024/06/10 18:09
1. 工程结构
工程文件的命名不是很规范,在这暂时不是最重要的,望见谅。呵呵。。。
2. 流程图
在这一步中我们没有添加其他复杂的配置,其他的内容,只是把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. 结果
添加相同的用户是要报错!!
9. 分析
为什么要面向接口编程:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599700.html
- SSH 整合- 4 - add service_servic…
- SSH整合- 2- add service layout
- SSH 整合- 3 - add - hibernate
- SSH 整合- 5 - service_serviceImp…
- SSH 整合- 6 - service_serviceImp…
- SSH 整合- 6 - service_serviceImp…
- SM30: Add custom …
-  
- How to add environment var…
-
- 集线器 交换机 路由器 网桥 …
- To add a multiplexed copy of the…
- 使用BBED修改SCN …
- Hive安装 …
- android o…
- android …
- [转] 彼尔…
- “constructors not allowed …
- CentOS_6安装Oracle_11g_R2手记
- 23种设计模式的形象比喻 (转载)
- SSH 整合- 3 - add - hibernate
- matlab基础学习——向量与矩阵
- Z5S自定义短信铃声
- SSH 整合- 4 - add service_servic…
- 全域hash
- @RequestMapping 用法详解之地址映射
- SSH 整合- 5 - service_serviceImp…
- SSH 整合- 6 - service_serviceImp…
- SSH 整合- 6 - service_serviceImp…
- 从 QA 到 EP
- Mybatis3.2和Spring3.x整合----Myb…
- Mybatis3.2和Spring3.x整合----Myb…