• DAO模式代码阅读及应用


    OO之接口-DAO模式代码阅读及应用

    1. StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?

      StudenDaoListImpl.java:使用链表的形式对学生信息进行相关操作,在getStuByName操作中使用的是fore循环。

      StudentDaoArrayImpl.java:使用数组的形式对学生信息进行相关操作,在getStuByName中使用的是fori循环。

    2. StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有?

      StudentDao.java文件中定义了一个接口,给出了属性和方法,具体的方法需要在实现它的类中实现。不同的类根据不同的存储方式有不一样的实现相同程序的代码。

    3. 使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。

      • DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。

        理解:DAO模式是将方法声明和方法的实现分离开来,便于不同的数据库使用不同的代码实现相同程序。

      • DAO 模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离对上层提供面向对象的数据访问接口。

        理解:DAO模式实现了两次隔离:①隔离了数据访问代码和业务逻辑代码。②隔离了不同数据库的实现。一个典型的DAO接口把对数据库的所有操作定义成抽象方法,可以提供多种实现。针对不同数据库给出DAO接口定义方法的具体实现。

    4. 尝试运行Test.java。根据注释修改相应代码。结合参考代码回答使用DAO模式有什么好处?

      Array:
      package stumanagement;
      
      public class Test {
      
      	public static void main(String[] args) {
      		Student[] students = new Student[3];
      		students[0] = new Student("Tom");
      		students[1]= new Student("Jerry");
      		students[2] = new Student("Sophia");
      
      		
      		StudentDao sdm = new StudentDaoArrayImpl(50);//使用数组实现
      		//StudentDao sdm = new StudenDaoListImpl();//使用列表实现
      		
      		//往后台写数据,无需考虑后台是什么(到底是数据库、文件、数组、List)
      		//因为这里是面向StudentDao接口
      		System.out.println("===========写入学生========");
      		for(Student e:students){
      			if (!sdm.addStudent(e)){
      				System.out.println("添加学生失败");
      			}else{
      				System.out.println("插入成功!!");
      			}
      		}
      		System.out.println("===========显示所有学生========");
      		sdm.diplayAllStudents();
      		System.out.println("===========查询学生========");
      		Student temp = sdm.getStuByName("Alex") ;
      		if(temp == null){
      			System.out.println("查无此人");
      		}else{
      			System.out.println(temp);
      		}
      
      
      	}
      
      }
      
      

      运行结果:

      List:
      package stumanagement;
      
      public class Test {
      
      	public static void main(String[] args) {
      		Student[] students = new Student[3];
      		students[0] = new Student("Tom");
      		students[1]= new Student("Jerry");
      		students[2] = new Student("Sophia");
      
      		
      		//StudentDao sdm = new StudentDaoArrayImpl(50);//使用数组实现
      		StudentDao sdm = new StudenDaoListImpl();//使用列表实现
      		
      		//往后台写数据,无需考虑后台是什么(到底是数据库、文件、数组、List)
      		//因为这里是面向StudentDao接口
      		System.out.println("===========写入学生========");
      		for(Student e:students){
      			if (!sdm.addStudent(e)){
      				System.out.println("添加学生失败");
      			}else{
      				System.out.println("插入成功!!");
      			}
      		}
      		System.out.println("===========显示所有学生========");
      		sdm.diplayAllStudents();
      		System.out.println("===========查询学生========");
      		Student temp = sdm.getStuByName("Jerry") ;
      		if(temp == null){
      			System.out.println("查无此人");
      		}else{
      			System.out.println(temp);
      		}
      
      
      	}
      
      }
      
      

      运行结果:

      DAO模式优点:
      1. 把对数据库的所有操作定义成抽象方法,提供多种实现方法。
      2. 避免了数据库连接和关闭代码的重复使用,方便修改。

    参考视频:5.4 案例:DAO模式

  • 相关阅读:
    网上找的一个读取wave文件的代码片段
    用c++简单实现智能指针(转)
    剖析ifstream打开含中文路径名文件失败的原因(转)
    我是一个程序员
    .NET简谈委“.NET技术”托链 狼人:
    Entity Framework “.NET技术”4.1 推荐英文教程 狼人:
    Azure和Bing Maps API示“.NET技术”例经验分享 狼人:
    .NET中的异步编程“.NET技术”:使用F#简化异步编程 狼人:
    C#类类型“.NET技术” 狼人:
    Silverlight 应“.NET技术”用整合 狼人:
  • 原文地址:https://www.cnblogs.com/hcy420/p/13871279.html
Copyright © 2020-2023  润新知