发布时间:2023-07-30
浏览次数:0
◆数据库操作框架
数据库操作框架是指第三方软件操作数据库所使用的组件工具。 尽管根据不同的开发语言,数据库操作框架有所不同intellij idea 数据库关系图,但它们要解决的问题是相同的,即建立连接、断开连接、发送操作指令(通常是SQL语句)以及转换和返回结果。
对于用 Java 编写的前端应用程序,比较流行的数据库框架是 JDBC、JDBC、JPA 和 .
下面将对这五种数据库操作框架进行介绍和比较。
◆1. 数据库连接
JDBC(Java)是Java操作数据库的基本工具,它为各种数据库提供统一的规范和套接字。 通过使用 JDBC,Java 应用程序可以使用同一个套接字来操作不同的数据库(例如 MySQL 等)。 但实际上,JDBC并不直接与数据库进行通信,它只是充当Java程序与数据库驱动程序之间的桥梁,如图4.72所示。
图4.72 JDBC工作原理
说明:数据库驱动程序是用Java编写的组件,负责与其对应的数据库进行通信。 数据库驱动本身就可以直接使用,而JDBC只是统一了各种驱动的使用。 在使用JDBC操作数据库之前,需要自动指定数据库驱动程序。
JDBC可以在任何Java程序中使用,使用JDBC操作数据库如代码4.44所示。
不过,不建议在前端应用程序中使用 JDBC,因为 JDBC 相当原始,用户需要编写大量代码来建立对数据库的操作。 在前端应用中,使用其他数据库框架可以节省大量代码(如建立连接、断开连接等)。
代码4.操作数据库的代码
#更新数据
设置==id_1
……
//指定MySQL数据库驱动
类。(“com.mysql.jdbc。”);
// 建立连接
=.(
//数据库连接地址,xxx为具体数据库名称
“jdbc:mysql://ip:端口/xxx”,
““,//用户名
““);//密码
//编译查询SQL语句, ? 是占位符intellij idea 数据库关系图,然后用参数替换
=“*=?”;
=.();
//这 ? 替换中的占位符,1表示第一个占位符
.(1,“王五”);
//执行SQL语句
=.();
//处理查询集合
while(.next()){
//对每个查询结果的处理,根据获取数组的值的方法是.("id")
◆2. 数据库连接
JDBC是为相关框架(如Boot、MVC等)设计的数据库操作框架,是对JDBC的底层封装。 通过使用JDBC,开发人员无需关心数据库连接过程(无需编写连接和断开数据库的代码),只需要在前端应用程序的配置文件中配置数据库连接信息即可实现手动连接数据库。
JDBC只能用在使用相关框架的前端应用程序中。 JDBC实现了手动连接和断开数据库,省去了JDBC中自动连接和断开数据库的麻烦。
在与数据库的通信方面,JDBC保留了SQL语句的方法,但简化了JDBC的调用方法,如代码4.45所示。
代码4.操作数据库的代码
//编译查询SQL语句, ? 是占位符,然后用参数替换
="*=?=?";
//执行SQL语句
=.(,"王五","50");
//处理查询集合
为(inti = 0;我 // 转换每个结果的数据类型 地图=(地图)list.get(i); ...//处理每个结果 ◆3. 它是一个高度手动的数据库操作框架,是对JDBC的底层封装。 通过使用,可以将数据库中的表映射为Java类,如代码4.46所示。 开发者只需要使用这个映射类来操作数据库(手动生成SQL语句),如代码4.47所示。 说明:根据数据库的表映射的Java类称为(实体)模型。 要使用它们,需要为每个需要操作的表建立相应的模型。 模型可以使用相关工具手动生成,不需要自动填写。 清单 4.46 用于数据库映射的 Java 类 //映射数据库的user表,表中有id和info两个数组 @ @Table(名称=“用户”) 类用户{ @ID @(=。) @(name="id",=true,=false); @(名称=“信息”) 信息; 长getId(){ ID; (长ID){ 这个.id=id; (){ 信息; 无效(信息){ 这个.info=信息; 代码4.操作数据库的代码 // 获取数据库连接,与4.3.4节不同 =.(); // 编译查询HQL语句, ? 是占位符,然后用参数替换 =“=?”; 查询query=.(hql); query.(0,"王五"); //获取结果 列表=查询。 列表(); //处理查询结果 为(inti = 0;我 //将每个结果转换为对应的Java对象,其中User映射到代码4.45中定义的数据库 Java类 =(用户)list.get(i); ...//处理每个结果 可以在任何Java程序中使用。 数据库可以手动连接和断开(通过XML配置文件设置)。 在与数据库的通信方面,可以根据映射关系手动生成SQL单词和语句。 为了降低手动生成SQL语句的灵活性,提供了HQL(Query)语句。 HQL语句结构与SQL类似,但其功能不如SQL完善。 这些“自动生成SQL语句”的方法似乎节省了学习SQL的时间,并且希望使用面向对象编程思想的数据库。 而且在实际编程中,有些操作只能通过SQL语句来实现(无法完全脱离SQL语句),但是当要操作的数据表很多时,映射关系也会非常复杂。 因此,目前的热度正在逐渐减弱。 描述:类似于这些将关系数据库中的表映射到Java类的数据库操作框架,它们被称为ORM框架(对象关系映射)。 比较流行的ORM框架有等等。 ◆4. 日本PA JPA(Java API,Java Layer API)是ORM框架的统一规范,为多个ORM框架提供了统一的使用。 使用JPA的好处在于可以自由切换ORM框架而不影响代码。 JPA和ORM框架的关系如图4.73所示。 需要注意的是,在使用JPA之前,需要指定具体的ORM框架和数据库驱动。 图4.73 JPA内部结构 ◆5. 它是一个不完整的ORM框架,是对JDBC的底层封装。 还需要将数据库中的表映射为Java类,并且不会根据Java对象手动生成SQL语句。 如果作为数据库操作框架,开发者需要编译SQL语句模板,根据指定的SQL语句模板和Java对象生成对应的SQL语句,如代码4.48所示。 代码4.操作数据库的代码 @ { //定义SQL模板,其中#{}为要替换的参数 @("*=#{}= #{}") //定义操作函数。 函数调用后,会手动将参数填入SQL模板并执行SQL语句,然后返回 因此,返回类型 User 是映射到代码 4.46 中定义的数据库的 Java 类 列表(@Param(“”),@Param(“”) ); //下面是调用上面查询操作的例子 list=.("王五","0"); //处理查询结果 为(inti = 0;我 //将每个结果转换为对应的Java对象,其中User映射到代码4.46中定义的数据库 Java类 =list.get(i); ...//处理每个结果 可以在任何Java程序中使用。 的出现,在保持了ORM框架“以面向对象编程的思想使用数据库”的同时,也避免了手动生成SQL语句带来的限制。 ◆6. 数据库操作框架的选择 对于用Java编写的前端应用程序,数据库框架通常是在JPA(或诸如ORM框架)和JPA之间进行选择。 这三类数据库操作框架的主要区别在于SQL结构和返回结果转换的形式,这种方法本身很难区分哪种更好。 因此,只需遵循团队的使用习惯或偏好即可。 只需选择数据库操作框架即可。 ◆7. Boot中使用数据库框架的具体方式 这里以JDBC为例介绍Boot中使用数据库框架的具体方法。 在Boot中使用JDBC需要三个步骤,即引入JDBC依赖包、配置数据库信息、在代码中使用JDBC操作数据库。 (1)引入JDBC依赖包。 需要在项目配置文件(build.)中添加JDBC依赖包,如代码4.49所示。 代码4.49在build....中添加了JDBC依赖包 { …… //添加JDBC依赖包 'org..boot:-boot --jdbc' 'com.:druid:1.0.26'//数据库连接池依赖 ' mysql:mysql--java'//MySQL驱动依赖 …… …… 添加依赖包后,需要同步项目配置。 同步项目配置完成后,会下载并导入JDBC依赖包。 在IDEA中,只需点击“同步”按钮即可同步项目配置,如图4.74所示。 图 4.74 同步构建。 IDEA中的配置 (2)配置数据库信息。 配置数据库连接信息需要在前端应用的配置文件中设置(默认为.),如代码4.50所示,其中连接池的具体设置需要根据实际情况确定。 说明: 频繁建立和断开数据库连接非常消耗资源。 连接池的作用是防止频繁创建和释放连接带来的大量性能开销。 清单 4.50 将数据库连接信息添加到配置文件中... #设置数据库连接地址,xxx为具体数据库名称 ..jdbc-url=jdbc:mysql://ip:端口/xxx # 设置用户名 ..=根 #设置密码 ..= #指定MySQL数据库驱动 ..-class-name=com.mysql.cj.jdbc。 #设置数据库连接池,type为指定连接池的包,max-为最大活动连接数,max-idle为 最大等待连接数,-size为初始状态下建立的连接数 ..type=com..druid.pool。 ..最大-=20 ..最大空闲=8 ..-大小=10 …… (3)使用JDBC操作数据库的代码通常在Dao层,具体代码如代码4.51所示。 代码4.51通过JDBC操作数据库 com..demo.dao; // 引用的类 org..jdbc.core.; ...//省略其他引用的类 @(“”) 班级 { // 获取对象,该对象将被手动注入 @ ; (,){ 尝试 { //SQL语句,? 是占位符,后面是参数替换 =“INTO(?,?)”; //执行SQL语句 int=.(,,); 如果(>0){ “”; }别的{ “失败”; }抓住(e){ “失败”;} 获取列表(键){ 列表 = (); 尝试 { //SQL语句,? 是占位符,后面是参数替换 ="*=? =?”; //执行SQL语句 =.(,"王五","50"); }抓住(e){ //失败 ; 如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码