如何把JDBC方式的代码修改JPA方式的代码

欢迎来到李绪成的一亩三分地,有用的拿走,没有用的告诉我。
本文介绍如何把JDBC应用改成JPA应用。
把JDBC应用改成JPA程序,需要把原来通过JDBC API访问数据库的代码替换成使用JPA代码。
JDBC访问数据库的主要工作包括:
n得到JDBC驱动程序;
n使用DriverManager,Connection,Statement,ResultSet等;
而使用JPA完成数据的操作包括:
n得到JDBC驱动程序;
n得到持久性提供者相关类库和配置文件;
n提供实体类;
n使用Persistence、EntityManagerFactory和Entity等接口。
要完成修改,需要完成如下工作:
n提供配置文件persistence.xml文件和持久性提供者相关类库;
n需要把原来表示信息的普通JavaBean修改实体类;
n把JDBC代码修改为JPA代码。
下面以图书添加为例介绍。
1、提供配置文件persistence.xml文件和持久性提供者相关类库
可以参考JP两个相关实验中的过程,添加JPA支持,可以为工程添加类库,并且会生成persistence.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="bookstore_PU"
transaction-type="RESOURCE_LOCAL">
<provider>
oracle.toplink.essentials.PersistenceProvider
</provider>
<class>beans.Book</class>
<properties>
<property name="toplink.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="toplink.jdbc.url"
value="jdbc:mysql://localhost:3306/entitytest" />
<property name="toplink.jdbc.user" value="root" />
<property name="toplink.jdbc.password" value="root" />
</properties>
</persistence-unit>
</persistence>
2、把原来的JavaBean修改为实体类
可以使用MyEclipse中的功能,参考JPA的两个相关实验。
修改前JavaBean的代码如下:
package beans;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
publicclass Bookimplements java.io.Serializable {
private String bid;
private String bname;
private Float price;
private String author;
private String press;
public Book() {
}
public Book(String bid, String bname) {
this.bid = bid;
this.bname = bname;
}
public Book(String bid, String bname, Float price, String author, String press) {
this.bid = bid;
this.bname = bname;
this.price = price;
this.author = author;
this.press = press;
}
public String getBid() {
returnthis.bid;
}
publicvoid setBid(String bid) {
this.bid = bid;
}
public String getBname() {
returnthis.bname;
}
publicvoid setBname(String bname) {
this.bname = bname;
}
public Float getPrice() {
returnthis.price;
}
publicvoid setPrice(Float price) {
this.price = price;
}
public String getAuthor() {
returnthis.author;
}
publicvoid setAuthor(String author) {
this.author = author;
}
public String getPress() {
returnthis.press;
}
publicvoid setPress(String press) {
this.press = press;
}
}
修改的内容包括:
n在类上使用@Entity声明Bean类为实体类;
n在类上使用@Table声明与数据库中表的对应关系;
n在主键属性上(或者get方法上)使用@Id标注主键属性;
n在属性上使用@Column标注属性与表中列的对应关系;
修改后JavaBean的代码如下:
package beans;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
*Bookentity.@authorMyEclipsePersistenceTools
*/
@Entity
@Table(name="book"
,catalog="entitytest"
)
publicclass Bookimplements java.io.Serializable {
// Fields
private String bid;
private String bname;
private Float price;
private String author;
private String press;
// Constructors
/**defaultconstructor*/
public Book() {
}
/**minimalconstructor*/
public Book(String bid, String bname) {
this.bid = bid;
this.bname = bname;
}
/**fullconstructor*/
public Book(String bid, String bname, Float price, String author, String press) {
this.bid = bid;
this.bname = bname;
this.price = price;
this.author = author;
this.press = press;
}
// Property accessors
@Id
@Column(name="BID", unique=true, nullable=false, length=13)
public String getBid() {
returnthis.bid;
}
publicvoid setBid(String bid) {
this.bid = bid;
}
@Column(name="BNAME", nullable=false, length=30)
public String getBname() {
returnthis.bname;
}
publicvoid setBname(String bname) {
this.bname = bname;
}
@Column(name="PRICE", precision=12, scale=0)
public Float getPrice() {
returnthis.price;
}
publicvoid setPrice(Float price) {
this.price = price;
}
@Column(name="AUTHOR", length=30)
public String getAuthor() {
returnthis.author;
}
publicvoid setAuthor(String author) {
this.author = author;
}
@Column(name="PRESS", length=30)
public String getPress() {
returnthis.press;
}
publicvoid setPress(String press) {
this.press = press;
}
}
3、访问代码修改如下
修改前的代码:
// 使用JDBC
publicvoid addBook(String bookid, String bookname, String author,float price,String press) {
Connection con = null;
PreparedStatement stmt = null;
try {
// 指出连接数据库所需要的驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立与数据库之间的连接
con = DriverManager.getConnection(
"jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger");
// 编写查询数据库信息的SQL语句
String sql = "insert into book values(?,?,?,?,?)";
// 创建语句对象,用于执行SQL语句
stmt = con.prepareStatement(sql);
stmt.setString(1, bookid);
stmt.setString(2, bookname);
stmt.setFloat(3, price);
stmt.setString(4, author);
stmt.setString(5, press);
// 执行SQL语句得到结果集
stmt.executeUpdate();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
// 关闭相关对象
if (stmt != null)
try {
stmt.close();
} catch (Exception ee) {
}
if (con != null)
try {
con.close();
} catch (Exception ee) {
}
}
}
修改后的代码:
// 使用JPA
publicvoid
Jpa的创建和增删改查的代码 就是JPA的代码 立即下载

相关推荐

脑机接口(BCI)从原理到开发实战 09|SSVEP应用:通过视觉刺激控制设备

本文介绍了稳态视觉诱发电位(SSVEP)脑机接口技术。SSVEP是一种高效的非侵入式BCI范式,当用户注视特定频率闪烁的视觉刺激时,大脑枕叶会产生对应的节律性响应。文章详细阐述了SSVEP的神经机制、刺激范式设计、数据预处理方法,重点讲解了典型相关分析(CCA)这一核心识别算法。相比运动想象和P300范式,SSVEP具有信息传输率高(60-100 bits/min)、信号稳定、无需训练等优势,在高速拼写、设备控制等领域应用广泛。文章还提供了完整的电极选择、滤波、分段等预处理流程,以及CCA和滤波器组CCA的

小明的博客 1356

关于HIBERNATE转JPA的问题

公司目前因为Hibernate和公司产品的许可不兼容,要把hibernate做了,可以是我们系统光HBM就大几百个,美国一个架构师要换IBATIS,但是代价实在是大,8个人做一年也估计搞不定,哎. 我自己看了一下JPA(OPENJPA),发现和HIBERNATE太像了,打自己一个自己做做看有多快了,写了一个HBM转换ORM.XML的工具,快要成功了,结果有几个问题一直让我头大,不知道有高手帮我解...

zlhades的专栏 286

基于JavaFX的Http Server模拟器

源码地址 GitHub - DayRain/http-server-simulator: http server 模拟器 功能描述 HttpServer模拟器,通过简单的配置即可模拟第三方服务端,用于接收和响应HTTP请求。 支持同时模拟多个服务、动态添加接口、动态配置返回值。 使用说明 运行 exe运行 编译代码后,点击exe直接运行 代码运行 下载好代码后,运行主类ApplicationStarter即可 新建服务 主界面如下 点击 文件-新建 创建新的服务 ...

小楼夜听雨的博客 2536

从JDBC到JPA (1)

JDBC基础 什么是JDBC? Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。 简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以...

weixin_40364421的博客 636

关键词‖旋变传感器

旋转变压器(以下简称旋变)安装在永磁同步驱动电机的非传动端,其作用是检测转子的位置和速度。目前,通常采采用结构简单、坚固耐用、环境适应性好的磁阻式旋变作为位置传感器。

m0_72345077的博客 2153

Windows下CMake编译VTK

选择项目INSTALL,生成该项目,得到vtk在Debug模式下的lib和dll文件,在文件夹中可看见,已得到debug模式下lib库与dll库。,把Value值设置为最后在vtk_sln中生成include、dll、lib的位置。在上面点击Configure后,红色区域没有了。选择自己vs编译平台的版本信息,我这边已经设置好了没有这个设置了,借用参考博客的图片。设置完后,点击左下角"Configure",然后等待Configure。,把搜索结果的Value勾选上。在search中搜索。

weixin_74239923的博客 842

jdbc、jpa、spring data jpa、hibernate、mybatis之间的关系及区别

首先看一下用 hibernate+jquery后台实现的例子xiaqo.comJDBC 是java连接数据库操作的原生接口。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为各个数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。一句话概括:jdbc是所有框架操作数据库的必须要用的,由数据库厂商提供,但是为了方便java程序员调用各个数据库,各个数据库厂商都要实现jdbc接口。

JBIB ENGINE 1518

SAP_MM模块通过CC11 创建物料版本

通过本文,我们了解了 SAP 的[SAP_MM模块通过CC11 创建物料版本]的基本概念和应用方法。当物料主数据、BOM(物料清单)、工艺路线等对象需要进行变更控制时,通过创建“版本”或“更改单”来记录、控制和追溯变更。创建完变更主记录(Change Number)后,可在物料主数据维护时引用它,从而创建物料版本化信息。,在其中可以定义物料、BOM、工艺路线等对象的变更版本信息,从而在系统中实现版本化的物料管理。

我小时候很黑的博客 816

JDBC和Jpa的区别

一、简介: 1. JDBC: 英文全称:Java DataBase Connectivity JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。 JDBC库中所包含的API通常与数据库使用于: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改数据库中的数据记录 JDB...

intelrain的博客 2750

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

Robot_PLC_HMI_Automation 6727

软件测试高频面试题 2026 最新整理(功能 + 自动化)

本文系统整理了2026年软件测试面试高频题目及参考答案,涵盖功能测试、自动化测试及新兴热点领域。功能测试部分包含测试基础概念、用例设计方法、缺陷管理流程等10个必背题;自动化测试部分详细解析工具选择、元素定位、框架搭建等10个热门考点;新增章节聚焦AI测试、安全测试、性能指标等5个前沿话题。参考答案均采用结构化表述,包含定义、区别、适用场景等关键要素,并强调结合项目经验作答。文末提供2026版面试技巧,建议采用"结论-分点-总结"的回答逻辑,重点展现问题解决能力和技术前瞻性。

SmallBull的博客 1972

jpa、mybaties、jdbc

JDBC、mybaties、JPA的数据库开发 一、JDBC 1.概括 1.JDBC是Java访问数据库的标准规范,就是执行sql语句的javaAPI(Java语言通过JDBC可以操作数据库) 2.jdbc的由来,beacause 原因: 直接写代码操作数据库有以下问题 1.不知道MySql数据库的操作方式,解析方式; 2.代码非常繁琐,非常的麻烦; 3.MySQL和Oracle数据库的操作方式...

Echo_Hasaki的博客 1277

VTK:vtkAssembly用法实战

VTK:vtkAssembly用法实战程序输出程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkAssembly.h> #include <vtkAxesActor.h> #include <vtkCubeSource.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkOrientation

希望我的博客,能帮上你解决学习中工作中所遇到的问题 936

JPA和MyBatis和原生JDBC

没有最好的方案,只有最适合的方案。根据项目需求、团队技能和性能要求来选择合适的数据访问层实现方式。

刘皇叔说Java的博客 1047

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【JDBC与JPA】JDBC与JPA

一、简介: 1. JDBC: 英文全称:Java DataBase Connectivity JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。 JDBC库中所包含的API通常与数据库使用于: ...

小鱼菜鸟的博客 112

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JDBC与JPA

一、简介: 1. JDBC: 英文全称:Java DataBase Connectivity JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。 JDBC库中所包含的API通常与数据库使用于: 连接到数据库创建SQL或MySQL语句在数据库中执行SQL或MySQL查询查看和修改数据库中的数据记录

Abean 9196

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JDBC,ORM,JPA,Hibernate

参考一步步实现:JPA的基本增删改查CRUD(jpa基于hibernate) 参考JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1 参考Eclipse的Project Facets属性 使用什么ORM产品作为JPA的实现。比如使用hibernate作为jpa的实现。 参考各种数据库的jdbc驱动下载及连接方式 参考Oracle...

dream_heheda的博客 475

JDBC、JdbcTemplate、Hibernate、Mybatis、JPA、SpringDataJPA

MyBatis、JDBC、Hibernate区别是什么? JDBC -&amp;amp;amp;amp;gt; java data base connection,只是提供接口,由数据库厂商实现。 JDBCTemplate -&amp;amp;amp;amp;gt; 内嵌于Spring框架,对JDBC的封装,缺点:没有缓存 Mybatis -&amp;amp;amp;amp;gt; 注解+xml+Java放射技术 Hibernate -&amp;amp;amp;

qq_42806915的博客 3305

JPA简单入门以及IDEA第一个JPA程序

1.JPA简介 1.1 什么是JPA 1.JPA是Java Persistence API的简称。 2.JPA作为 Java EE 5.0 平台标准的 对象关系映射(ORM) 规范 将得到所有 Java EE 服务器的支持。 Sun 这次吸取了之前 EJB 规范惨痛失败的经历,在充分吸收现有 ORM 框架(如Hibernate)的基础上,得到了一个易于使用、伸缩性强的 ORM 规范。 3.从目前的...

weixin_45415977的博客 2947

mysql和jpa有什么区别_JDBC和Jpa的区别

一、简介:1. JDBC:英文全称:Java DataBase ConnectivityJDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。JDBC库中所包含的API通常与数据库使用于:连接到数据库创建SQL或MySQL语句在数据库中执行SQL或MySQL查询查看和修改数据库中的数据记录JDBC API支持用于数据库访问...

weixin_28764585的博客 480

jdbc-jpa

创建Maven项目:添加依赖!依赖可以到maven repository官网那个里面去寻找所需要的依赖。      首先探讨下传统的JDBC连接数据库。    1.开发JDBCUTILS(JDBC工具类,就是为了省去重复的代码,获取Connection,Statament,ResultSet)                 String user="root"; String

earl_hd的博客 8067

数据库连接方式总结:JDBC、JdbcTemplate、Hibernate、Mybatis、JPA、SpringDataJPA

1.JDBC 介绍 JDBC(Java DataBase Connectivity ,java数据库连接技术) 用来访问各种数据库 。JDBC 规范定义接口 , 具体的实现由各大数据库厂商来实现。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动,数据库驱动由数据库厂商提供。 开发步骤 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 ...

杜海的博客 3830
上一篇: 过好今天
下一篇: 什么是Web Service
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值