需求:有一个用户管理系统,会用到各种数据库【数据库随意换用】,怎么实现?
1.测试类:Test.java
2.用户对象:User.java
3.服务类:UserService.java
4.操作数据库的接口:UserDAO.java
5.数据库的接口实现:UserDAOImpl
我们先看看它们之间的调用关系:
上述的业务功能是这样的,假如就增加用户业务功能而言:在测试文件中,我们调用的是Service层的UserService里面的方法,通过UserService调用UserDAO来操作数据库,在UserDAO中将User对象实体传到后台数据库中保存。
这里我们为什么会有一个接口:实际上需要理解的就是面向接口编程的好处,写一个接口,实现部分可以是MySql的,Oracle的,SqlServer的,SBase的,或者在这里写Hibernate通过方言,文件,之类来实现功能,这样在业务功能上就具有了扩展性。【面向接口编程】
代码如下:
package com.bjsxt.service;
import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;
public class UserService {
private UserDAO userDAO=New UserDAOImpl();
public void add(User user) {
userDAO.save(user);
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
package com.bjsxt.model;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.bjsxt.dao;
import com.bjsxt.model.User;
public interface UserDAO {
public void save(User user);
}
package com.bjsxt.dao.impl;
import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;
public class UserDAOImpl implements UserDAO {
public void save(User user) {
//Hibernate
//JDBC
//XML
//NetWork
System.out.println("user saved!");
}
}