转自优快云:http://topic.youkuaiyun.com/u/20080123/15/ec6c6637-c8b9-4d7d-82f7-caefbd3a1d2a.html
比如说,你要注册一个用户,前面是业务逻辑,要调用数据访问层的save(user)方法。先写一个数据访问对象的接口
public interface IDAO{
void save(User user) throws UserNameExistException;
}
jdbc的实现是
public class JDBCDAO implements IDAO{
public void save(User user) throws UserNameExistException{
.....
String sql = "insert into t_user values(?,?,?,?)";
....
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1,user.getName());
....
pstm.executeUpdate();
......
}
}
Hibernate的实现是
public class HibernateDAO implements IDAO{
public void save(User user) throws UserNameExistException{
......
session.save(user);
session.getTransaction().commit();
....
}
}
你的业务层UserService只要这么写
public class UserService{
public void register(String userName,String password,int age,....等等参数){
//假设现在用的是JDBC的实现
IDAO dao = new JDBCDAO();//当你需要替换实现的时候,只要把这个JDBCDAO换成HibernateDAO就可以了,其它代码不需要改。
User user = new User();
user.setName(userName);
......
dao.save(user);
}
}