JDBC--(3)DAO设计、ORM、domain

博客介绍了DAO、ORM和domain相关知识。DAO即数据存取对象,可解决多地方CRUD操作代码重复问题,实现对持久化数据的访问;ORM是对象关系映射,方便以面向对象思想操作数据库;domain是符合JavaBean规范的类,是用户与数据库交互的核心中转站。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DAO设计

没有使用DAO存在的问题:
多个地方都要都同时做CRUD操作时,重复的代码就会很多

什么是DAO

Data Access Object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
在这里插入图片描述

ORM

什么是ORM

对象关系映射
将关系数据库中表中的记录映射成为对象,以对象的形式展现
因此ORM的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作

对应关系

在这里插入图片描述
在这里插入图片描述

domain

什么是domain

就是一个类
符合JavaBean规范一个类当中有字段和该字段的getterSetter方法
作用:是用户与数据库交互的核心中转站

domain类如图:
在这里插入图片描述
保持数据
在这里插入图片描述
获取数据
在这里插入图片描述
以获取数据为例:
Student.class

public class Student {
	Integer id;
	String name;
	Integer age;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
}

StudentDao.java

package com.iris.jdbc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class StudentDao {
	//保存
	public void save(Student stu) {
		// 2. 获取对象
		String url = "jdbc:mysql://localhost:3306/jdbc_db?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";		//url 数据库地址
		String user="root";		//user 数据库用户名
		String password="13718407978"	;	//password 数据库密码
		Connection conn = null;
		Statement st = null;

		//try{}catch(Exception e) {} finally {}   异常处理
		try {
			//加载注册驱动
			Class.forName("com.mysql.cj.jdbc.Driver");			//JAVA1.6之后可以不写此语句,根据开发环境类型而定
			//连接数据库
			conn = DriverManager.getConnection(url, user, password);
			// 3.創建SQL语句
			
			//字符串拼接
			Integer id=stu.getId();
			String name=stu.getName();
			Integer age = stu.getAge();
			
			String sql = "insert into student values("+id+",'"+name+"',"+age+")";
			System.out.println(sql);
			st = conn.createStatement();
			//4. 执行sql
			int row = st.executeUpdate(sql);
			System.out.println(row);		
		}catch(Exception e) {
		} finally {
			//5. 释放资源
			if(st != null) {
				try {
					st.close();
				}catch(Exception e) {
					e.printStackTrace();     //打印异常
				}
			}
			if(conn != null) {
				try {
					conn.close();
				}catch(Exception e) {
					e.printStackTrace(); 	 	//打印异常
				}
			}
		} 
	}
	//获取		
	//更新
}

Test.java

public class Test {
	public static void main(String[] args) {
		Student stu = new Student();
		stu.setId(1);
		stu.setAge(30);
		stu.setName("李白");
		//加载驱动
		//连接数据库
		//创建语句
		//执行语句
		//释放资源
		StudentDao dao = new StudentDao();
		dao.save(stu);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值