1|0数据持久化
数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。
1|1瞬时状态
保存在内存的程序数据,程序退出,数据就消失了
1|2持久状态
保存在磁盘上的程序数据,程序退出后依然存在
1|3数据持久化技术
Hibernate、JPA、==JDBC(Java Datebase Connectivity)==等
1|4JDBC框架
1|5Driver 接口
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现
在程序中不需要直接去访问实现了 Driver 接口的类,而是由**驱动程序管理器类(java.sql.DriverManager)**去调用这些Driver实现
2|0连接、操作数据库步骤
2|1一、获取数据库连接对象步骤
1、导入jar包
1、在项目中创建lib文件夹
2、将jar文件放置到lib文件夹
3、集成到项目中,右键build(eclipse)、add as library(idea)
2、注册驱动(Java代码中加载驱动类)
将com.mysql.jdbc包下的Driver类的字节码文件从本地磁盘加载到方法区中
==Oracle的驱动==:oracle.jdbc.driver.OracleDriver
==mySql的驱动==: com.mysql.jdbc.Driver
方式一:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名
方式二:DriverManager 类是驱动程序管理器类,负责管理驱动程序
通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,原因:
1、该方法,过于依赖jar包的存在
2、该方法,会造成二次注册
3、使用Class.forname可以降低耦合性
3、获取连接对象
协议:JDBC URL中的协议总是jdbc
子协议:子协议用于标识一个数据库驱动程序
子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为 了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名
几种常用数据库的JDBC URL
对于 Oracle 数据库连接,采用如下形式:
对于 SQLServer 数据库连接,采用如下形式:
对于 MYSQL 数据库连接,采用如下形式:
2|2二、执行sql语句
1、获取Statement对象
2、执行sql语句
Statement类方法分类
- int executeUpdate(sql);
- 针对数据库的增(insert into)、删(delete from)、改(update set)操作
- 返回值类型:实际影响的行数
- ResultSet executeQuery(sql);
- 针对数据库的查询(select from)操作
- 返回值类型:一个结果集类型
- boolean execute(sql);
- 针对数据库的增删改查操作,一般我们不会使用,jdbc的底层代码会使用
- 如果执行的sql语句是增删改,返回false
- 如果执行的sql语句是查询,返回true
3、处理执行结果(ResultSet)
4、释放资源
3|0实现JDBC工具类
将获取连接和关闭资源等公共、重复的代码封装成一个工具类
3|1封装查询返回值遍历方式
4|0sql注入攻击
SQL 注入是利用某些系统没有对用户输入的数据进行充分的检查,而在 用户输入数据中注入非法的 SQL 语句段或命令,如下,从而利用系统的 SQL 引擎完成恶意行为的做法。
对于 Java 而言,要防范 SQL 注入,只要用 PreparedStatement(继承于Statement) 取代 Statement 就可以了
5|0PreparedStatement类
1、可以通过调用 Connection 对象的 preparedStatement() 方法获取 PreparedStatement 对象
2、PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句
5|1PreparedStatement类和Statement的比较
1、代码的可读性和可维护性
2、PreparedStatement 能最大可能提高性能
3、PreparedStatement 可以防止 SQL 注入
4、如果拼接表名、列名、关键字,必须使用Statement,防止sql语句错误
6|0ResultSet类
1、通过调用 PreparedStatement 对象的 excuteQuery() 方法创建该对象
2、代表结果集
3、ResultSet 返回的实际上就是一张数据表.,有一个指针指向数据表的第一条记录的前面。
7|0ResultSetMetaData 类
1、通过调用ResultSet对象的getMetaData()方法创建改对象
2、可用于获取关于 ResultSet 对象中列的类型和属性信息的对象
7|1常用方法
8|0JDBC封装Dao
**DAO (Data Access objects 数据存取对象)**是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。能够是代码的结构更加清晰化。
8|1DAO 模式组成
- DAO接口: 把对数据库的所有操作定义成抽象方法,可以提供多种实现。
- DAO 实现类: 针对不同数据库给出DAO接口定义方法的具体实现。
- 实体类:用于存放与传输对象数据。
- 数据库连接和关闭工具类: 避免了数据库连接和关闭代码的重复使用,方便修改
__EOF__
本文链接:https://www.cnblogs.com/am0304/p/16493993.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!