美文网首页
2018-03-01web开发中业务层和dao层的耦合问题

2018-03-01web开发中业务层和dao层的耦合问题

作者: 紫杉叶子 | 来源:发表于2018-03-01 21:57 被阅读0次

在实际开发过程中,为了防止耦合,实现一个dao层方法接口,业务层,从一个工厂间接获得dao层对象,工厂读取.properties文件,避免直接创建dao层对象,dao层只需实现接口方法即可

2.png 2018-03-01_214242.png
  • .properties
CustomerDao=com.chen.customers.dao.impl.CustomerDaoImpl
  • CustomerDao接口
public interface CustomerDao {

    //完成客户信息的添加
    void insertCustomer(Customer bean);

}
  • dao层的CustomerDao接口实现类
public class CustomerDaoImpl implements CustomerDao  {
    
    
    
    //完成客户信息的添加
    /* (non-Javadoc)
     * @see com.chen.customers.dao.CustomerDao#insertCustomer(com.chen.customers.domain.Customer)
     */
    @Override
    public void insertCustomer(Customer bean) {
        
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        
        String sql = "insert into customers values(?,?,?,?,?,?,?,?,?)";
        Object[]  params = {genereateID(),bean.getName(),bean.getGender()
                ,bean.getBirthday(),bean.getEmail(),
                bean.getCellphone(),bean.getPreference(),
                bean.getType(),bean.getDescription()};
        
        try {
            runner.update(sql,params);
        } catch (SQLException e) {
            
            throw new RuntimeException(e);

        }
        
        
    }
}
  • DaoFactory工厂类
/*
*这是一个工厂类
*
*/
public class DaoFactory {
    
    public DaoFactory() {
        // TODO Auto-generated constructor stub
    }
    
    //创建一个工厂的实例
    private  static DaoFactory instance =  new DaoFactory();
    
    public static DaoFactory getInstance() {
        
        return instance;
        
    }
    
    //用于返回传进来的一个实例对象出来
    //泛型,传进来一个类的字节码
    public <T> T createDao(Class<T> t) {
        
        //Teacher.class
        String simpleName = t.getSimpleName();//Teacher
        
        //读取一个配置文件: CustomerDao=com.chen.customers.dao.impl.CustomerDaoImpl
        String clazzName = ResourceBundle.getBundle("dao").getString(simpleName);//com.chen.customers.dao.impl.CustomerDaoImpl
        
        try {
            return (T)Class.forName(clazzName).newInstance();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
        
    }

}

相关文章

  • 2018-03-01web开发中业务层和dao层的耦合问题

    在实际开发过程中,为了防止耦合,实现一个dao层方法接口,业务层,从一个工厂间接获得dao层对象,工厂读取.pro...

  • IOC与生命周期

    IOC解决:耦合问题 耦合问题(分层开发中)持久层类:UserDAO服务层类:UserService{Public...

  • DAO层

    DAO层 DAO 是 Data Access Object(数据访问对象的缩写),DAO层是业务逻辑层与数据库层之...

  • java分层架构概念

    service是业务层,DAO (Data Access Object) 数据访问 1.JAVA中Action层,...

  • 开发dao层

    原始dao开发: 程序员需要自己定义dao接口以及dao实现类。(参考入门程序) Mapper代理dao开...

  • SSH框架之旅-spring(1)

    1.Spring 框架介绍 Spring 是一个开源的轻量级 Java 开发框架,可以解决业务逻辑层和其他层的耦合...

  • springboot项目的基本结构

    springboot基本可以分为以下几个层次: dao层(mapper层)service层(业务层)model层(...

  • Spring Boot 2.X(十一):全局异常处理

    前言 在 Java Web 系统开发中,不管是 Controller 层、Service 层还是 Dao 层,都有...

  • 谈谈架构

    java web开发中,传统的系统架构通常为三层架构:web层,service层,dao层。 web层负责页面数据...

  • 关于网络层的设计(一)——和业务层的对接

    前言 关于网络层的设计,最主要的是和业务层的对接问题。网络层设计得好,可以让业务层开发事半功倍;反之,若网络层设计...

网友评论

      本文标题:2018-03-01web开发中业务层和dao层的耦合问题

      本文链接:https://www.haomeiwen.com/subject/mrwnxftx.html