什么是JPA?Java Persistence API简介

persistence-api:提供基本存储库的通用接口 持久性API 提供基本存储库的通用接口。 实作 立即下载

作为规范, Java Persistence API 关注 持久性 ,它将Java对象的创建过程和具体的创建形式解耦。并非所有Java对象都需要持久化,但大多数应用程序都会保留关键业务对象。JPA规范允许您定义应该保留 哪些 对象,以及 如何 在Java应用程序中保留这些对象。

JPA本身不是一个工具或框架; 相反,它定义了一组可以由任何工具或框架实现的概念。虽然JPA的对象关系映射(ORM)模型最初基于 Hibernate ,但它已经发展了。同样,虽然JPA最初打算用于关系/ SQL数据库,但是一些JPA实现已经扩展用于NoSQL数据存储。支持JPA和NoSQL的流行框架是 EclipseLink ,它是JPA 2.2的参考实现。

JPA和Hibernate

由于它们交织在一起的历史,Hibernate和JPA经常混为一谈。但是,与 Java Servlet 规范一样,JPA产生了许多兼容的工具和框架; Hibernate只是其中之一。

Hibernate 由Gavin King开发,于2002年初发布,是一个用于Java的ORM库。King开发了Hibernate作为 持久化实体bean 的 替代品 。该框架非常受欢迎,当时非常需要,它的许多想法都在第一个JPA规范中被采用和编纂。

今天, Hibernate ORM 是最成熟的JPA实现之一,并且仍然是Java中ORM的流行选项。 Hibernate ORM 5.3.8 (撰写本文时的当前版本)实现了JPA 2.2。此外,Hibernate的工具系列已经扩展到包括 Hibernate Search , Hibernate Validator 和 Hibernate OGM 等流行工具,后者支持NoSQL的域模型持久性。

什么是Java ORM?

虽然它们的执行不同,但每个JPA实现都提供某种ORM层。为了理解JPA和JPA兼容的工具,您需要掌握ORM。

对象关系映射是一项 任务 - 开发人员有充分的理由避免手动执行。像Hibernate ORM或EclipseLink这样的框架将该任务编码为库或框架,即 ORM层 。作为应用程序体系结构的一部分,ORM层负责管理软件对象的转换,以便与关系数据库中的表和列进行交互。在Java中,ORM层转换Java类和对象,以便可以在关系数据库中存储和管理它们。

默认情况下,持久化对象的名称将成为表的名称,字段将成为列。设置表后,每个表行对应于应用程序中的对象。对象映射是可配置的,但默认值往往效果很好。

图1说明了JPA和ORM层在应用程序开发中的作用。

 

配置Java ORM层

设置新项目以使用JPA时,需要配置数据存储区和JPA提供程序。您将配置 数据存储连接器 以连接到您选择的数据库(SQL或NoSQL)。您还将包含和配置 JPA提供程序 ,它是一个框架,如Hibernate或EclipseLink。虽然您可以手动配置JPA,但许多开发人员选择使用Spring的开箱即用支持。有关手动和基于Spring的JPA安装和设置的演示,请参阅下面的“ JPA安装和设置 ”。

Java数据对象

Java Data Objects是一个标准化的持久性框架,它与JPA的不同之处主要在于支持对象中的持久性逻辑,以及它长期以来对使用非关系数据存储的支持。JPA和JDO足够相似,JDO提供者也经常支持JPA。请参阅 Apache JDO项目 ,以了解有关JDO与JPA和JDBC等其他持久性标准相关的更多信息。

Java中的数据持久性

从编程的角度来看,ORM层是一个 适配器层 :它使对象图的语言适应SQL和关系表的语言。ORM层允许面向对象的开发人员构建持久保存数据的软件,而无需离开面向对象的范例。

使用JPA时,可以创建从数据存储区到应用程序的数据模型对象的 映射 。您可以定义对象和数据库之间的映射,而不是定义对象的保存和检索方式,然后调用JPA来保存它们。如果您正在使用关系数据库,那么应用程序代码和数据库之间的大部分实际连接将由JDBC( Java数据库连接API)处理 。

作为规范,JPA提供 元数据注释 ,您可以使用它来定义对象和数据库之间的映射。每个JPA实现都为JPA注释提供了自己的引擎。JPA规范还提供了 PersistanceManager 或者 EntityManager ,它们是与JPA系统联系的关键点(其中您的业务逻辑代码告诉系统如何处理映射对象)。

为了使所有这些更具体,请考虑清单1,这是一个用于为音乐家建模的简单数据类。

清单1. Java中的一个简单数据类

 
public class Musician { private Long id; private String name; private Instrument mainInstrument; private ArrayList performances = new ArrayList<Performance>(); public Musician( Long id, String name){ /* constructor setters... */ } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setMainInstrument(Instrument instr){ this.instrument = instr; } public Instrument getMainInstrument(){ return this.instrument; } // ...Other getters and setters... } 

清单1中的 Musician 类用于保存数据。它可以包含原始数据,例如 名称 字段。它还可以与其他类(如 mainInstrument 和 performances )保持关系。

Musician 存在的 原因 是包含数据。这种类有时称为DTO或 数据传输对象 。DTO是软件开发的常见功能。虽然它们包含多种数据,但它们不包含任何业务逻辑。持久化数据对象是软件开发中普遍存在的挑战。

JDBC的数据持久性

将 Musician 类的实例保存到关系数据库的一种方法是使用JDBC库。JDBC是一个抽象层,它允许应用程序发出SQL命令而无需考虑底层数据库实现。

清单2显示了如何使用JDBC 来持久化 Musician 类。

清单2.插入记录的JDBC

 
Musician georgeHarrison = new Musician(0, "George Harrison"); String myDriver = "org.gjt.mm.mysql.Driver"; String myUrl = "jdbc:mysql://localhost/test"; Class.forName(myDriver); Connection conn = DriverManager.getConnection(myUrl, "root", ""); String query = " insert into users (id, name) values (?, ?)"; PreparedStatement preparedStmt = conn.prepareStatement(query); preparedStmt.setInt (1, 0); preparedStmt.setString (2, "George Harrison"); preparedStmt.setString (2, "Rubble"); preparedStmt.execute(); conn.close(); // Error handling removed for brevity 

清单2中的代码是相当自我记录的。该 georgeHarrison 对象可以来自任何地方(前端提交,外部服务等),并设置其ID和name字段。然后,对象上的字段用于提供SQL insert 语句的值。( PreparedStatement 该类是JDBC的一部分,提供了一种将值安全地应用于SQL查询的方法。)

虽然JDBC允许手动配置附带的控件,但与JPA相比,它很麻烦。要修改数据库,首先需要创建一个SQL查询,该查询从Java对象映射到关系数据库中的表。然后,只要对象签名发生更改,就必须修改SQL。使用JDBC,维护SQL本身就成了一项任务。

JPA的数据持久性

现在考虑清单3,我们使用JPA 持久化 Musician 类。

清单3.使用JPA保留George Harrison

 
Musician georgeHarrison = new Musician(0, "George Harrison"); musicianManager.save(georgeHarrison); 

清单3用一行 session.save() 替换了清单2中的手动SQL ,它指示JPA持久保存该对象。从那时起,SQL转换由框架处理,因此您永远不必离开面向对象的范例。

JPA中的元数据注释

清单3中的魔力是 配置 的结果,该 配置 是使用JPA的 注释 创建的。开发人员使用注释来告知JPA应该保留哪些对象,以及如何保留它们。

清单4显示了具有单个JPA注释的 Musician 类。

清单4. JPA的@Entity注释

 
@Entity public class Musician { // ..class body } 

持久对象有时称为 实体 。附加 @Entity 到类, Musician 告知JPA应该保留此类及其对象。

配置JPA

与大多数现代框架一样,JPA 遵循约定编码 (也称为约定优于配置),其中框架提供基于行业最佳实践的默认配置。作为一个示例,名为 Musician 的类将默认映射到名为 Musician 的数据库表。

传统配置是节省时间的,并且在许多情况下它运行良好。也可以自定义JPA配置。例如,您可以使用JPA的 @Table 注释来指定应该存储 Musician 类的表。

清单5. JPA的@Table注释

 
@Entity @Table(name="musician") public class Musician { // ..class body } 

清单5告诉JPA将实体( Musician 类)持久化到 musician 表中。

主键

在JPA中, 主键 是用于唯一标识数据库中每个对象的字段。主键可用于引用对象并将对象与其他实体相关联。每当您在表中存储对象时,您还将指定要用作其主键的字段。

在清单6中,我们告诉JPA要使用哪个字段作为 Musician 主键。

清单6.指定主键

 
@Entity public class Musician { @Id private Long id; 

在这种情况下,我们使用JPA的 @Id 注释将 id 字段指定为 Musician 主键。默认情况下,此配置假定主键将由数据库设置 - 例如,当字段设置为在表上自动递增时。

JPA支持生成对象主键的其他策略。它还有用于更改单个字段名称的注释。通常,JPA足够灵活,可以适应您可能需要的任何持久性映射。

CRUD操作

将类映射到数据库表并建立其主键后,即可拥有在数据库中创建,检索,删除和更新该类所需的一切。调用 session.save() 将创建或更新指定的类,具体取决于主键字段是否为null或是否适用于现有实体。调用 entityManager.remove() 将删除指定的类。

JPA中的实体关系

简单地使用原始字段持久化对象只是方程式的一半。JPA还具有管理彼此相关实体的能力。在表和对象中都有四种实体关系:

  1. 一到多
  2. 许多到一
  3. 许多一对多
  4. 一比一

每种类型的关系描述了实体与其他实体的关系。例如, Musician 实体可以与由诸如 List 或 Set 的集合表示的实体具有 一对多的关系 。

如果 Musician 包含一个 Band 字段,这些实体之间的关系可以是 多对一的 ,这意味着在单个 Band 类上有 Musician集合 。(假设每个音乐家只在一个乐队中演奏。)

如果 Musician 包含 BandMates 字段,则可以表示与其他 Musician 实体 的多对多关系。

最后, Musician 可能与 Quote 实体有 一对一的关系 ,用于表示一个着名的引语: Quote famousQuote = new Quote() 。

定义关系类型

JPA为每种关系映射类型提供注解。清单7显示了如何注解 Musician 和 Performance s 之间的一对多关系。

清单7.注释一对多关系

 
public class Musician { @OneToMany @JoinColumn(name="musicianId") private List<Performance> performances = new ArrayList<Performance>(); //... } 

需要注意的一点是 @JoinColumn 告诉JPA Performance 表上的哪一列将映射到 Musician 实体。每个performance都将与单个 Musician 关联,该列由此列跟踪。当JPA将一个 Musician 或一个 Performance 加载到数据库中时,它将使用此信息重新构建对象图。

在JPA中获取策略

除了知道 在 数据库中放置相关实体​​的位置之外,JPA还需要知道 如何 加载它们。 获取策略 告诉JPA如何加载相关实体。加载和保存对象时,JPA框架必须能够微调对象图的处理方式。例如,如果 Musician 类有一个 bandMate 字段(如清单7所示),加载 george 可能导致整个 Musician 表从数据库加载!

我们需要的是定义相关实体的 延迟加载 的能力- 当然,认识到 JPA 中的 关系可能是eager或 lazy的。您可以使用注释来自定义提取策略,但JPA的默认配置通常可以直接使用,无需更改:

  1. 一对多:lazy
  2. 多对一:eager
  3. 多对多:lazy
  4. 一对一:eager

JPA安装和设置

最后,我们将简要介绍如何为Java应用程序安装和设置JPA。在本演示中,我将使用EclipseLink,即JPA参考实现。

安装JPA的常用方法是在项目中 包含 JPA提供程序。清单8显示了如何将EclipseLink作为Maven pom.xml 文件中的依赖项包含在内。

清单8.将EclipseLink包含为Maven依赖项

 
org.eclipse.persistence eclipselink 2.5.0-RC1 

您还需要包含数据库的驱动程序,如清单9所示。

清单9. MySql连接器的Maven依赖关系

 
mysql mysql-connector-java 5.1.32 

接下来,您需要告诉系统您的数据库和提供程序。这在 persistence.xml 文件中完成,如清单10所示。

清单10. Persistence.xml

 
http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="MyUnit" transaction-type="RESOURCE_LOCAL"> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/foo_bar"/> <property name="javax.persistence.jdbc.user" value=""/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> </properties> </persistence-unit> </persistence> 

还有其他方法可以向系统提供此信息,包括以编程方式。我建议使用该 persistence.xml 文件,因为以这种方式存储依赖项使得在不修改代码的情况下更新应用程序非常容易。

清单10. Persistence.xml

 
http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="MyUnit" transaction-type="RESOURCE_LOCAL"> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/foo_bar"/> <property name="javax.persistence.jdbc.user" value=""/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> </properties> </persistence-unit> </persistence> 

还有其他方法可以向系统提供此信息,包括以编程方式。我建议使用该 persistence.xml 文件,因为以这种方式存储依赖项使得在不修改代码的情况下更新应用程序非常容易。

JPA的Spring配置

使用Spring将极大地简化JPA与应用程序的集成。例如,将 @SpringBootApplication 注释放在应用程序头中会指示Spring 根据您指定的配置自动扫描类并根据需要注入 EntityManager 。

如果您希望Spring为您的应用程序提供JPA支持,清单11显示了要包含的依赖项。

清单11.在Maven中添加Spring JPA支持

 
org.springframework.boot spring-boot-starter 2.1.3.RELEASE org.springframework.boot spring-boot-starter-data-jpa 2.1.3.RELEASE 

结论

处理数据库的每个应用程序都应该定义一个应用程序层,其唯一目的是隔离持久性代码。正如您在本文中看到的,Java Persistence API引入了一系列功能并支持Java对象持久性。简单的应用程序可能不需要JPA的所有功能,在某些情况下,配置框架的开销可能不值得。然而,随着应用程序的增长,JPA的结构和封装确实能够保持不变。使用JPA可以简化目标代码,并提供用于访问Java应用程序中的数据的传统框架。


喜欢的点点关注,点点赞。

对Java技术,架构技术感兴趣的同学,欢迎加QQ群585550789,一起学习,相互讨论。

群内已经有小伙伴将知识体系整理好(源码,笔记,PPT,学习视频),欢迎加群领取。
 

Markdown编辑器介绍 这篇文章介绍了Markdown编辑器的功能和使用方法。主要内容包括:Markdown的基本语法如标题、列表、链接插入等;新增功能如图片拖拽、数学公式支持、甘特图和UML图表绘制;常用快捷键说明;以及文本导出导入操作。文章详细说明了如何通过Markdown语法实现文本格式化、代码高亮、表格创建等功能,并提供了多种图表绘制的语法示例,帮助用户更好地利用Markdown编辑器进行写作和内容创作。 阅读详情

相关推荐

从零搭建Python接口自动化测试框架:pytest+requests+Allure实战指南

接口自动化测试是现代软件工程中保障交付质量、提升测试效率的核心实践。其基本原理是通过脚本模拟客户端请求,对服务端接口进行自动化的功能验证、性能探测与回归测试,从而替代重复的手工操作。在技术实现上,Python凭借其简洁语法和丰富的生态,成为构建此类框架的主流选择,其中pytest测试框架、requests HTTP库和Allure报告工具构成了技术栈的黄金组合。这套技术方案的价值在于,它能将测试用例数据(如YAML文件)与执行逻辑分离,实现数据驱动测试,并通过持续集成(如Jenkins)无缝融入DevOps

weixin_31822733的博客 378

java持久化api_使用Java持久性API

java持久化api Java Persistence API(JPA)是供应用程序开发人员理解的重要Java功能。 它准确地将Java开发人员如何将对对象的方法调用转换为访问,持久化和管理NoSQL和关系数据库中存储的数据。 本文通过构建自行车借贷服务的教程示例详细研究了JPA。 本示例将使用Spring Boot框架,MongoDB数据库( 不再是开源的 )和Maven包管理器为较大的应...

cumo3681的博客 623

PayPal支付集成完全指南:开源库实践

本文介绍了如何从零开始集成PayPal支付功能。首先概述了PayPal提供的多语言SDK和开源库,包括PHP、Python、Node.js等版本。然后详细说明了准备工作,包括注册开发者账号、获取API凭证和使用沙盒环境测试。文章以Node.js为例,演示了安装SDK、基础配置和实现支付流程的完整代码,包括创建订单和捕获支付两个核心功能。最后提及了订阅支付等高级功能,为开发者提供了完整的支付集成方案。通过清晰的代码示例和步骤说明,帮助开发者快速实现PayPal支付功能集成。

2501_93501927的博客 1260

【java学习-Spring】Spring-data-jpa(Java Persistence API)和Template

1,概念 JPA的存在意义是为了整合第三方ORM框架,建立一种标准的方式ORM 访问数据库的统一。但是现阶段JPA几乎都是接口,实现都是Hibernate在做。我们都知道,在使用持久化工具的时候,一般都有一个对象来操作数据库,在原生的Hibernate中叫做Session,在MyBatis中叫做SqlSession,而在JPA中叫做EntityManager通过这个对象来操作数据库。 对象关系映...

午后阳光 3517

Bentley ORD(openroads designer) 二次开发(BIM)第七节 在ORD SDK中调用MicroStation SDK

从课程刚开始的时候我们就通过学习,了解了ORD的开发是基于MicroStation的,ORD SDK的接口发布的时候也对MicroStation SDK也做了一次发布。这一章将以我们对ORD SDK知识的了解为基础,使用ORD SDK的接口读取道路几何信息、计算桩号,然后再使用MicroStation SDK 读取地形数据和计算投影点的位置,并创建一组方柱形状的Soild。计算方柱底部坐标要经过两大步骤,通过路线的桩号及偏移距离去定位方柱的平面位置,通过方柱的平面位置计算数字地面模型上的投影点的坐标。

chen286990651的博客 882

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

JPA Java Persistence API学习笔记

前言:学习Hibernate之前需要先了解JPA JPA全称(JavaPersistenceAPI),它是官方提出的Java持久化规范。需要有Provider实现功能。而Hibernate就是JPA Provider中最强的一个。 JPA包括以下3个方面的技术 1)ORM映射元数据。 2)API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情。 3)查询语言,通过面向对象而非面向数据库的查询语句查询数据,避免程序的SQL语句耦合。 Hibernate简介 Hibernate是一个开放源代

m0_51179717的博客 2086

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 372

Java Persistence API (JPA) 是 Java EE 规范中的一个子规范,它提供了一种标准的框架,用于将 Java 对象映射到关系数据库中

Java Persistence API (JPA) 是 Java EE 规范中的一个子规范,它提供了一种标准的框架,用于将 Java 对象映射到关系数据库中。JPA 使得开发者能够专注于编写数据访问逻辑,而无需过多地关注底层的数据库细节。

[Blog][Domain] programb.blog.youkuaiyun.com 1859

用urdf给自己的ROS小车编写模型

3.3 使用urdf编写自己的ROS小车模型 3.3.1 常见的ROS小车结构有哪些? 下面就是常见的ROS小车,相信在大家的脑海里已经有了自己小车的样子,下面我和大家一起使用urdf对ros小车建模。 这里只对urdf进行简单介绍,然后就带大家使用urdf最基础的标签,建立机器人的urdf机器人模型。关于更多细节,请参看官网:http://wiki.ros.org/urdf/Tutorials 3.3.2 什么是urdf?建模的原因? 什么是urdf? URDF(Unified Robot Descri

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

【STM32系统】基于STM32设计的锂电池电量/电压检测报警器系统

本设计旨在研究一个基于STM32F103C8T6微控制器的锂电池电量/电压检测报警器系统,应用于便携式电子设备电池管理。系统通过STM32的ADC模块对18650锂电池电压进行采集,利用LCD1602显示模块实时显示电池电压,当检测到电池电量不足或电压异常时,蜂鸣器报警模块会发出警报提醒用户。系统采用简单的硬件结构和优化的软件架构,通过对实际电池电压数据的检测、处理和显示,实现了低功耗、实时监测的锂电池管理功能。本文将介绍系统的设计原理、硬件电路、软件实现以及调试测试过程。

嵌入式阿齐Archie 1万+

persistence-api依赖的作用

java持久化API,就是类似与ORM的东西,主要用于和数据库交互的,比如Java bean和数据库表的对应关系,这个是JPA的核心包,属于Java EE 标准。EJB3的持久层应该就是用这个来做的,如果我没记错的话 JPA=Java Persistency API ...

别抢我蓝buff 3560

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

什么是JPA? Java Persistence API简介

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取![外链图片转存中…(img-XtqzCGB1-1713465135075)]

2401_84010836的博客 833

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jpa是什么api_什么是JPA? Java Persistence API简介

jpa是什么api 作为规范, Java Persistence API与persistence有关,它宽松地表示Java对象在创建它们的应用程序进程中不存在的任何机制。 并非所有Java对象都需要保留,但是大多数应用程序都可以保留关键业务对象。 JPA规范使您可以定义应保留哪些对象,以及如何在Java应用程序中保留这些对象。 JPA本身不是工具或框架; 相反,它定义了可以由任何工具或框架实...

cxu0262的博客 632

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

什么是JPA?Java Persistence API简介(1)

";清单2中的代码是相当自我记录的。该对象可以来自任何地方(前端提交,外部服务等),并设置其ID和name字段。然后,对象上的字段用于提供SQLinsert语句的值。该类是JDBC的一部分,提供了一种将值安全地应用于SQL查询的方法。虽然JDBC允许手动配置附带的控件,但与JPA相比,它很麻烦。要修改数据库,首先需要创建一个SQL查询,该查询从Java对象映射到关系数据库中的表。然后,只要对象签名发生更改,就必须修改SQL。使用JDBC,维护SQL本身就成了一项任务。JPA的数据持久性。

Y1567409的博客 1113

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jpa 默认生成sql语句_什么是JPA?Java Persistence API简介

作为规范,Java Persistence API关注持久性,它将Java对象的创建过程和具体的创建形式解耦。并非所有Java对象都需要持久化,但大多数应用程序都会保留关键业务对象。JPA规范允许您定义应该保留哪些对象,以及如何在Java应用程序中保留这些对象。JPA本身不是一个工具或框架; 相反,它定义了一组可以由任何工具或框架实现的概念。虽然JPA的对象关系映射(ORM)模型最初基于Hiber...

weixin_35415045的博客 264
上一篇: Docker封装Java环境镜像(Alpine+OpenJDK)
下一篇: 谷歌助力,快速实现 Java 应用容器化
java1856905
博客等级 码龄8年 100粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值