JPA个人理解

JPA是什么?

JPA全称JavaPersistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA是JSR-220(EJB3.0)规范的一部分,在JSR-220中规定实体对象(EntityBean)由JPA进行支持。

所以JPA不局限于EJB3.0,而是作为POJO持久化的标准规范,可以脱离容器独立运行,开发和测试更加方便。

JPA在应用中的位置如下图所示:

为什么要使用JPA?

在说为什么要使用JPA之前,我们有必要了解为什么要使用ORM技术。

ORM 是Object-Relation-Mapping,即对象关系影射技术,是对象持久化的核心。ORM是对JDBC的封装,从而解决了JDBC的各种存在问题:

1.繁琐的代码问题

用JDBC的API编程访问数据库,代码量较大,特别是访问字段较多的表的时候,代码显得繁琐、累赘,容易出错。例如:PreparedStatementpstmt=con.prepareStatment("insert into accountvalue(?,?,?,?,?,?,?,?,?)");

ORM则建立了Java对象与数据库对象之间的影射关系,程序员不需要编写复杂的SQL语句,直接操作Java对象即可,从而大大降低了代码量,也使程序员更加专注于业务逻辑的实现。

2.数据库对象连接问题

关系数据对象之间,存在各种关系,包括1对1、1对多、多对1、多对多、级联等。在数据库对象更新的时候,采用JDBC编程,必须十分小心处理这些关系,以保证维持这些关系不会出现错误,而这个过程是一个很费时费力的过程。

ORM建立Java对象与数据库对象关系影射的同时,也自动根据数据库对象之间的关系创建Java对象的关系,并且提供了维持这些关系完整、有效的机制。

3. 系统架构问题

JDBC属于数据访问层,但是使用JDBC编程时,必须知道后台是用什么数据库、有哪些表、各个表有有哪些字段、各个字段的类型是什么、表与表之间什么关系、创建了什么索引等等与后台数据库相关的详细信息。

使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有Java的对象,程序员只需要根据业务逻辑的需要调用Java对象的Getter和 Setter方法,即可实现对后台数据库的操作,程序员不必知道后台采用什么数据库、有哪些表、有什么字段、表与表之间有什么关系。

4.性能问题

采用JDBC编程,在很多时候存在效率低下的问题。

pstmt=conn.prepareStatement("insert into user_info values(?,?)");

       for (int i=0; i<1000; i++) {

          pstmt.setInt(1,i);

         pstmt.setString(2,"User"+i.toString());

          pstmt.executeUpdate();

       } 

以上程序将向后台数据库发送1000次SQL语句执行请求,运行效率较低。

采用ORM技术,ORM框架将根据具体数据库操作需要,会自动延迟向后台数据库发送SQL请求,ORM也可以根据实际情况,将数据库访问操作合成,尽量减少不必要的数据库操作请求。

JPA与Hibernate关系?

相信很多人搞混JPA与Hibernate的关系,其实JPA是一种规范;Hibernate是JPA的其中一种实现;JPA是思想、是规范;Hibernate是框架、是具体实现。JPA也有一套实现,就叫做JPA,这个实现借鉴了很多Hibernate的东西,所以大家会感觉用起来与Hibernate很类似,会了一个,另一个也就会了。

JPA规范与实现关系如图:

JPA实现与Hibernate关系:

总结

JPA是一种规范、一种标准;其他框架是其实现。JPA本身的实现也不断吸收融合其他框架优秀的地方,一步步做的更好。所有的JPA实现,不论是Hibernate还是其他的框架,由于标准一样,思想类似所以技术可能略有不同,但是可以做到一通百通。

时间: 2024-10-19 00:53:45

JPA个人理解的相关文章

谈谈我对mybatis和jpa的理解

其实要承认,一个东西用久了都会有习惯心理.mybatis和jpa,两个持久层框架.从底层到用法都不同.但是实现的功能是一样的.所以说一直以来颇有争议.常年混迹于各大qq技术交流群.见过jpa的死忠粉也见过mybatis的铁杆.作为一个不到两年工作经验的小菜鸟来说,你让我分析源码,讲什么底层实现我是讲不出来的.只能作为一个使用者,来谈谈自己对这两个框架的理解. 谈谈我对mybatis和jpa的理解首先,都知道jpa的前身是著名的ssh中的h-->Hibernate.我到现在还记得学习Hiberna

JPA的理解

JPA概念 Java persistence API的简称,中文名是Java持久层API,是JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.(对象持久化:是将内存中的对象保存到可永久保存的存储设备中的一种技术) JPA出现的原因 1.简化现有JavaEE和JavaSE应用的对象持久化的开发工作: 2.Sun希望整合ORM技术,实现在持久化领域的统一应用: JPA提供的技术 1.ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描

关于JPA的理解

JPA全称 Java Persistence API.JPA通过JDK5.0注解或者XML描述对象和关系表的映射关系,并将运行期的实体对象持久化到数据库中.持久化:即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中.xml数据文件中等等.持久化是将程序数据在瞬时状态和持久状态间转换的机制.JDBC就是一种持久化机制,文件IO也是一种持久化机制. 规范:所谓的规范意指明文规定或者约定俗称的标准.如:道德规范.技术规

spring jpa ManyToMany 理解和使用

1.java和jpa 中所有的关系都是单向的.这个关系数据库不同,关系数据库,通过外键定义并查询,使得反向查询总是存在的. 2.JPA还定义了一个OneToMany关系,它与ManyToMany关系类似,但反向关系(如果已定义)是ManyToOne关系. OneToMany与JPA中ManyToMany关系的主要区别在于,ManyToMany总是使用中间关系连接表来存储关系, OneToMany可以使用连接表或者目标对象的表引用中的外键源对象表的主键. @OneToMany(cascade =

JPA Hibernate jpa spring data jpa

什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中: 如:@Entity.@Table.@Column.@Transient等注解. 2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和

JPA、Hibernate、Spring data jpa之间的关系,终于明白了

什么是jpa? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中: 如:@Entity.@Table.@Column.@Transient等注解. 2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和S

JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合

什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中: 如:@Entity.@Table.@Column.@Transient等注解. 2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和

Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring Data 和 Jpa! 本文大纲: 1. 故事的主角 1.1 Jpa 1.1.1 JPA 是什么 Java Persistence API:用于对象持久化的 API Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层 1.1.2 JPA 和 Hibernate 的关

十八、sun JPA理解及使用

1.JPA理解及实现:    JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持,是SUN在充分吸收现有ORM框架的基础上,得到了一个易于使用.伸缩性强的ORM规范.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.    JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分.可以在Web应用.甚至桌面应用中使用.JPA的宗旨是为POJO提供持久