1.什么是DAO模式编程:
DAO(Data Access Object)是一种设计模式,用于将应用程序逻辑和数据存储逻辑分离。DAO 模式将数据访问逻辑封装在单独的数据访问对象中,使业务逻辑与数据访问逻辑彻底分离。
DAO 模式的核心思想是:将数据访问与数据操作分离。在 DAO 模式中,我们定义一个接口(数据访问对象接口)来定义所有可用的数据库操作。该接口的实现类应该负责实现数据访问操作的细节,同时提供简单的 API 供应用程序使用。
在编程实现 DAO 模式时,通常会定义一个抽象类或者接口来定义基本的 CRUD(创建、读取、更新和删除)操作。然后,我们可以使用具体的实现类来访问数据存储,例如访问关系型数据库(如 MySQL、PostgreSQL)或者非关系型数据库(如 Redis、MongoDB)。
DAO 模式的优点包括:
-
提高了数据访问的安全性和可靠性。
-
简化了数据访问的代码。
-
程序员可以更好地专注于业务逻辑的实现。
-
更容易进行单元测试。
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、接口的实现类,需要重写接口中的方法。