1. StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?
答:StudenDaoListImpl通过链表List,实现操作,存储学生信息;StudentDaoArrayImpl通过数组实现操作,储存学生信息。两者都是存储学生信息,方法不同。StudenDaoListImpl不需要设置学生个数,StudentDaoArrayImpl需要提前知道学生个数。
2. StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有?
答:StudentDao.java文件是定义接口,在其他的类中实现。编写接口的方式和类很相似,但接口并不是类,属于不同的概念,类描述对象的属性和方法,接口则包含类要实现的方法,且接口中的方法都是公有的。
3. 使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。
一个典型的DAO 模式主要由以下几部分组成。
1、DAO接口: 把对数据库的所有操作定义成抽象方法,可以提供多种实现。
2、DAO 实现类: 针对不同数据库给出DAO接口定义方法的具体实现。
3、实体类:用于存放与传输对象数据。
4、数据库连接和关闭工具类: 避免了数据库连接和关闭代码的重复使用,方便修改。
DAO模式的作用
1隔离业务逻辑代码和数据访问代码
2.隔离不同数据库的实现
DAO模式的组成部分
DAO接口
DAO实现类
实体类
数据库连接和关闭工具类
理解:
DAO模式通俗来讲,就是将数据库操作都封装起来。外界调用方法时只知道方法功能但不能知道具体代码与细节和数据的储存处理,将两者分开,保证了代码的保密性和安全性。
4. 尝试运行Test.java。根据注释修改相应代码。结合参考代码回答使用DAO模式有什么好处?
使用数组实现
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("Tom") ;
if(temp == null){
System.out.println("查无此人");
}else{
System.out.println(temp);
}
}
}
列表实现
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("Tom") ;
if(temp == null){
System.out.println("查无此人");
}else{
System.out.println(temp);
}
}
}
DAO模式优点:
1.只要修改数据访问方式就可以在不同接口上使用,例如Test文件中对学生信息的存储,使用了链表与数组的便捷转换。
2.DAO模式将业务逻辑层和数据处理层分开,对于一个大型项目,DAO模式下可以很方便对代码优化,数据库的修改只要修改DAO层的访问方式就可以了,方便后期的维护和修改。