JPA
Posted xiaolige
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA相关的知识,希望对你有一定的参考价值。
第一 JPA的概述
jpa是一套操作数据库的规范(java persistence API:java 持久化规范),他内部是有接口和抽象类构成(单独使用jpa接口并不能完成操作
,需要对应的实现类才可以)
第二 功能
1.jpa的注解编程
jpa的注解是用来替换,hibernate中的映射文件的。可以单独在hibernate运行环境中使用
2.jpa的接口编程
使用接口的方式编写程序,站在更高的角度上看待问题。不在重点关注实现类(实现类的切换,只需要修改配置文件)
java代码不用发生变化
第三 jpa的注解编程(*****)
jpa的注解,不需要导入额外的jar包
在hibernate运行环境中使用jpa注解替换hibernate的映射文件
* 对单表进行映射关系配置
1.声明实体类
@Entity
2.配置实体类与表的映射关系
@Table
name:表名
3.配置主键
@Id
4.主键生成策略
@GeneratedValue
generator
引用其他的主键生成器
配合hibernate的@GenericGenerator注解
strategy
使用jpa的主键生成策略
identity,sequence,table,auto
5.指定属性和字段的映射关系
@Column
* 一对多的注解配置
实体类中使用包含关系描述表关系
客户:包含联系人的集合
联系人:包含一个客户对象
双向关联(a-->b,b-->a)
单向关联
单向一对多
一的一方找到多的一方(A-->B)
单向多对一
多的一方找到一的一方(B-->A)
一对多的保存原则
先保存一的一方,再保存多的一方
配置一对多注解的步骤
1.声明关联关系
@OneToMany
@ManyToOne
2.配置主键
@JoinColumn
name : 外键名称
referencedColumnName:参照的主表的主键名
单向一对多:
@OneToMany
targetEntity:对方的字节码
@JoinColumn
name : 外键名称
referencedColumnName:参照的主表的主键名
配置一对多的放弃维护权
@OneToMany
mappedBy:指定关联关系的配置参照对方
配置多对一
@ManyToOne
targetEntity:对方的字节码
@JoinColumn
name : 外键名称
referencedColumnName:参照的主表的主键名
** 多对多
@ManyToMany:配置多对多关系
targetEntity:对方的字节码对象
@JoinTable:配置中间表
joinColumns:接受一个@JoinColumn的数组,当前对象在中间表的外键
inverseJoinColumns:接受一个@JoinColumn的数组,对方对象在中间表的外键
@JoinColumn
name : 外键名称
referencedColumnName:参照的主表的主键名
* 多对多放弃外键维护:
@ManyToMany(mappedBy="")
第四 jpa的接口编程(**)
导入对jpa接口的实现包(hibernate-entityManager.jar)
JPA对象 hibernate对象
entityManagerFactory sessionFactory
entityManager(实体管理) --------- session
hibernate的映射文件(被jpa注解替代)
hibernate的核心配置文件(jpa的核心配置文件)
1.数据库信息
2.可选配置信息
3.映射文件的位置
搭建jpa的操作环境
1.jpa是一套接口,使用的实现类是hibernate提供的(hibernate的jar + hibernate-entityManager.jar)
2.创建实体类,并在实体类上使用注解的形式配置映射关系
3.在src下创建一个META-INF的文件夹,创建一个persistence的配置文件(jpa的核心配置文件)
以上是关于JPA的主要内容,如果未能解决你的问题,请参考以下文章