美文网首页
什么是JPA

什么是JPA

作者: g忠一 | 来源:发表于2018-09-25 18:45 被阅读0次

什么是JPA?

Java Persistence API:用于对象持久化的API

Java EE  5.0 平台标准的ORM规范,使得应用程序以同意的方式访问持久层 

什么是ORM?

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换成另一种形式

一般的ORM包括以下四个部分:

一个对持久类对象进行CRUD操作的API;

一个对语言或API用来规定与类和类属性相关的查询:

一个规定mapping metadata的工具;

一种技术可以让ORM的实现同事务对象一起进行dirty  checking,lazy associatin fetching  以及其他的优化操作。

JAP与hibernate的关系

JPA是一个规范,不是框架

hibernate是JPA的实现

什么是hibernate?

hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,他将opjo与数据库表建立映射关系,是一个全自动的ORM 框架,hibernate可以自动生成SOL语句,自动执行,使得

java程序员可以随心所欲的shiyo8ng对象编程思维来操纵数据库。

hibernate可以应用在任何使用jdbc的场合

一个简单的jpa实例

person.java 

package cn.com.jyp.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Person {private Integer id;private String name;@aliyunzixun@xxx.com Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

Test.java

package Test;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import cn.com.jyp.model.Person;public class Test {@org.junit.Testpublic void save() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa");// 持久化单元名EntityManager em = factory.createEntityManager();Person person = new Person();person.setName("人");em.getTransaction().begin();em.persist(person);em.getTransaction().commit();em.close();factory.close();}}

JPA的基本注解

@Entity :指出该Java类为实体类,将映射到指定的数据库

@Transient :忽略该属性,不需要映射到数据表的一列,否则默认为@Basic

@Temporal :在属性上调整精度,比如Date

@Table :标注常用name属性,用于指定数据库的表明

@Id :映射主键(放在getter方法之前)

@GeneratedValue :用于标注主键的生成策略,通过strategy属性指定

@Column :映射数据表的列名,指定unique,length等

@Basic :基本注解,默认有

映射关系

单向多对一:使用@ManyToOne来映射多对一关系映射;使用@JoinColumn来映射外键;建议先保存1的一端,后保存n的一端;可以使用@ManyToOne的fetch来修改默认的关联属性的加载策略

单向一对多:使用@OneToMany来映射一对多关系映射;使用@JoinColumn来映射外键;

双向一对一:使用@OneToOne来映射一对一对应关系映射;建议先保存不维护关联关系的一方,既没有外键的一方,

双向多对多:使用@ManyToMany来映射多对多关系映射;使用@JoinTable来映射中间表;name:指定外键的列名;rederenedColumnName:指定外键列关联的当期表的那一列;inverseJoinColumns:映射关联的类所在中间表的外键

相关文章

网友评论

      本文标题:什么是JPA

      本文链接:https://www.haomeiwen.com/subject/sxgloftx.html