传智播客学习之JPA

本文介绍了JPA(Java Persistence API)的基本概念和发展背景,作为Sun官方提出的Java持久化规范,JPA旨在简化现有的持久化开发工作。文章进一步讲解了如何在Java项目中配置并使用JPA,包括设置环境、编写实体类及执行基本的CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天是上课的第一天,由徐老师给我们上JPA的课,新年过后,这是一个惊喜,因为又是徐老师带我们的课程,大家都十分喜欢徐老师,因为自从听完Hibernate后,“徐侠客”这三个字已经深深扎在我们班的每个同学心里了。今天也和大家分享一下JPA相关知识,虽然JPA在国内还不是很火,但是在国外,JPA的使用还是十分多的,而且JPA在未来还是很有发展前景的。

一、JPA概述

JPAJava Persisitence API)是Sun官方提出的java持久化规范,它为java开发人员提供了一种对象/关系映射来管理java应用中的关系数据,他的出现只要是为了简化现有的持久化开发工作和整合ORM技术,结束现在HibernateTopLinkORM框架各自为营的局面。

JPA是在充分吸收了现有HibernateTopLinkORM框架的基础上发展而来的,具有易于使用、伸缩性强等优点。

JPA通过JDK5.0注解和XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

二、 jpa简单应用

下面编写一个简单的jpa程序,步骤如下:

1.建立一个java工程,导入jar包(jpa的相关jar包以及供应商的jar包,包括一些数据库连接的jar包)

2.引入配置文件,并配置

JPA中我们的配置文件一定放在classpath下的META-INF文件夹下,文件名为persistence.xml,配置说明如下:

1Transaction-type属性配置:

 Resource-local事务:本地资源管理事务,依托于数据库管理(或者消息队列)事务。

 JTA(Java Transaction Api):必须javaEE应用服务器下。

当我们在一个事务中需要用到两个不同数据库(跨越多个资源)的时候,我们需要用jta,分布式事务管理,每一个库都有自己的分布式事务管理,开启事务和提交都是有jta完成,驱动我们需要用XADriver(每一个数据库分布式事务管理驱动),当我们提交时,它会通知子资源(多个不同数据库),如果一个不成功。两个都不成功。总之当多个资源参与(多个数据库)XA(分布式XA(分布式事务)资源)时我们采用JTA管理事务,

 小结: Jee环境中默认是JTA J2se环境中默认是Resource-local

2)Provider子元素配置

配置供应商。即jpa规范的实现厂商。如果是hibernate,由于在hibernate-entitymanager.jar中的META-INF文件夹的services下的javax.persistence.spi.PersistenceProvider中已经配置了持久化供应商,所以可以扫描到,找到正确的供应商,不用配置。但是如果是其他产品,需要配置了。

3)Properties子元素配置

配置产品相关的自身的属性,两个属性,一个name,一个valuename不要随便写,是相关产品自身的属性。

4)class子元素

配置实体类,hibernate的不用配置,加了注解,可以扫描到。

3.创建实体

注意虽然我们可以通过配置文件映射,这里推荐使用注解,至少两个注解@Entity@Id,但是如果我们采用代理主键,需要加@GeneratedValue它的属性有strategy(策略),我们可以设置代理主键的策略,这里不写相当于AUTO,依赖底层数据库自身机制。不加约束相当于自然主键

@Entity

public class Person {

@Id

private Integer id;

private String name;

......

以下是set get方法,省略

4.建立一个类测试一下

1.创建EntityManagerFactory

 EntityManagerFactory emf= Persistence.createEntityManagerFactory("jpa");

2.创建EntityManager

  javax.persistence.EntityManager em = emf.createEntityManager();

3.开始一个事务

em.getTransaction().begin(); 

4.持久化操作(persist/merge/remove/find等方法)

5.提交事务

6.关闭EntityManager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值