DAO模式编程

1.什么是DAO模式编程:

DAO(Data Access Object)是一种设计模式,用于将应用程序逻辑和数据存储逻辑分离。DAO 模式将数据访问逻辑封装在单独的数据访问对象中,使业务逻辑与数据访问逻辑彻底分离。

DAO 模式的核心思想是:将数据访问与数据操作分离。在 DAO 模式中,我们定义一个接口(数据访问对象接口)来定义所有可用的数据库操作。该接口的实现类应该负责实现数据访问操作的细节,同时提供简单的 API 供应用程序使用。

在编程实现 DAO 模式时,通常会定义一个抽象类或者接口来定义基本的 CRUD(创建、读取、更新和删除)操作。然后,我们可以使用具体的实现类来访问数据存储,例如访问关系型数据库(如 MySQL、PostgreSQL)或者非关系型数据库(如 Redis、MongoDB)。

DAO 模式的优点包括:

  1. 提高了数据访问的安全性和可靠性。

  2. 简化了数据访问的代码。

  3. 程序员可以更好地专注于业务逻辑的实现。

  4. 更容易进行单元测试。

DAO 模式在许多现代编程语言中得到了广泛的应用。例如,Java 中的 Spring 框架可以方便地实现 DAO 模式。Python 中的 ORM(Object Relation Mapper)框架也可以实现 DAO 模式。

1、ADO模式编程方式,数据,业务,逻辑这些进行抽离。
    2、properaties进行配置  配置信息文件。
    3、javabean,封装对象的形式
        去给我们封装表的数据然后进行数据处理。

持久化:
    在电脑内存中的东西,或者我们软件运行时候生成的东西
    这些东西都是内存里面的。等我们关闭软件,或者电脑关机,下次就不在存在了!
    
    如果想要某些信息持久化保存,就需要放到 本地的存储文件,文本,数据库等等当中。.xml,.txt,.doc,.database
                                .properties
        了解:        
            xml信息格式:
                <student>
                    <name>zhangsan</name>
                    <age>18</age>
                </student>
                
        .properties信息格式:
                name=zhangsan
                age =18

    1、DAO模式编程方式,数据,业务,逻辑这些进行抽离。
    
            抽取:把业务逻辑,数据库操作,数据封装,这些都分离开来
                抽取出来这些代码,分不同的包,不同的类,来进行处理。
                
                好处:这样可以提高代码的可扩展性,降低代码之间的耦合性。简化代码

                低耦合,高内聚。

        (1)当我们写完jdbc的标准数据库链接代码之后
                发现有很多重复的代码,这些每次链接数据库都要写一遍,太麻烦了
                抽取!
                
        (2)Utils类,也叫工具类,用于做一些重复的基础操作,提供一写方法给我们调用执行就可以了

        (3)student类的一个封装javabean 封装,可以讲表的属性字段封装成一个对象。
                    持久化的存储。
                
                练习:通过封装student类,jdbcUtils类,Test测试类,来访问数据库,进行增加数据的操作。
                        public class Test2 {
                        private static Connection conn;
                        private static PreparedStatement pstmt;
                        public static void main(String[] args) {
                            //创建student、类对象,设置对应的属性。导包快捷键ctrl+shif+o
                            Student stu = new Student();
                            stu.setId(3);
                            stu.setName("王五");
                            stu.setPassword("345");
                            stu.setIdnum(8219898);
                            try {
                                conn = JDBC_Utils.getConn();
                                // 4、定义sql语句
                                String sql = "insert into student values(?,?,?,?)";
                                // 5、创建sql执行对象
                                pstmt = conn.prepareStatement(sql);
                                // 6、执行sql语句
                                pstmt.setInt(1, stu.getId());
                                pstmt.setString(2, stu.getName());
                                pstmt.setString(3, stu.getPassword());
                                pstmt.setLong(4, stu.getIdnum());
                                int count = pstmt.executeUpdate();
                                // 7、处理结果
                                System.out.println(count);
                            }  catch (SQLException e) {
                                e.printStackTrace();
                            }finally{
                                // 8、关闭流,释放资源。
                                JDBC_Utils.closeAll(null, pstmt, conn);
                            }
                        }
                        
                        
            (4)抽取出来,driver,数据库链接的url,user,password这些,方便后续的修改。
                        .properties 文件,是配置文件。
                        
                        1、项目中src目录下,创建一个jdbc.properties文件。
                            里面写我们项目中需要用到的配置参数。
                                driver=com.mysql.jdbc.Driver
                                url=jdbc:mysql://localhost:3306/test1
                                user=root
                                password=123
                                
                        2、应用: JDBC_Utils类中的静态代码块里面,先创建Properties对象
                            用他的load()方法,根据配置文件的位置,来加载配置文件。
                            
                        3、加载进来之后,就可以通过get(key)方法,获取对应的配置信息的值
     
                                Properties pt = new Properties();
    
                                pt.load(new FileInputStream("src/jdbc.properties"));
                                driver = (String) pt.get("driver");
                                url = (String) pt.get("url");
                                user = (String) pt.get("user");
                                psd = (String) pt.get("password");

                    4、拓展,properties加载方法:
                                    
        //        pt.load(new FileInputStream("src/jdbc.properties"));
       //开发过程中推荐使用全路径方式,否则可能会报错,fileNotFindExecption 文件找不到异常。
                            //        pt.load(new FileInputStream("D:\\work_code_space\\eclipse_code\\" +
                            //                "code1\\A267\\Mysql08_1_DAO模式开发\\src\\jdbc.properties"));
                                        
                            //        pt.load(new FileReader(JDBC_Utils.class.getClassLoader().getResource("jdbc.properties").getPath()));
                            //        
                            pt.load(JDBC_Utils.class.getClassLoader().getResourceAsStream("jdbc.properties"));
                    
               推荐使用: pt.load(ClassLoader.getSystemResourceAsStream("jdbc.properties"));
                            
                (5)定义一个接口,这个接口定义很多需要子类来实现的方法。    
                        1、接口中定义的方法,没有具体实现
                        2、接口的实现类,需要重写接口中的方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值