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的核心配置文件)





posted @ 2018-06-30 16:42  JokerZM  阅读(114)  评论(0编辑  收藏  举报