JPA自学入门

JPA入门

什么是JPA
  1. JPA(Java Persistence API)概述

    JPA是一个接口,所有的ORM框架都实现了此接口

  2. JPA的作用

    通过注解与xml文件配置的方式实现表与持久化类之间的映射关系

    表与持久化类的映射关系用注解,数据库核心配置依然使用xml

JPA环境的搭建、使用
  1. 需要使用的jar包

    16个hibernate的jar包、1个JPA的包

  2. 表与持久化类的映射(注解方式)

    类上的配置:

 @Entity		//标识当前类是持久化类
 @Table(name="表名")		//当前持久化类与哪个表映射

属性上的配置:

 @Id		//当前属性是oid
 @Column(name="主键名")		//和表的哪个字段做映射
 @GeneratedValue(strategy=GenerationType.IDENTITY)	//指定oid的增长策略
  1. 数据库核心配置文件

    核心配置文件需要建在src/META-INF/persistence.xml其中的xml配置文件的约束:

 hibernate-entitymanager-5.0.7.Final.jar/org.hibernate.jpa/persistence_2_0.xsd的24-26

配置信息与hibernate的相似

  1. 与hibernate配置文件使用的不同点
//1.全查用getResultList()
//2.条件查,首个问好从1开始而不是0
//3.聚合差,用getSingleResult()
  1. 一对多的配置

    一一方的配置:

/**
 * targetEntity 多的一方的字节码文件对象(Linkman.class)
 * mappedBy 自己在多的一方的属性名,同时放弃外键维护("customer")
 * cascade 开启级联保存(CascadeType.REFRESH,CascadeType.REMOVE.CascadeType.ALL)
*/
@OneToMany(targetEntity=Linkman.class,mappedBy="customer",cascade=CascadeType.ALL)
private Set<Linkman> linkmans = new HashSet<Linkman>();

​ 多的一方的配置:

/**
 * targetEntity 一一方的字节码文件对象(Customer.class)
 * name 外键的属性名("wj_id")
 * referencedColumnName 外键与一一方的哪一个属性关联("cust_id")
*/
@ManyToOne(targetEntity=Customer.class)
@JoinColumn(name="wj_id",referencedColumnName="cust_id")
private Customer customer;
  1. 多对多的配置

    多的一方配置(User),维护外键

@ManyToMany(targetEntity=Role.class)
//JionTable新建表
@JoinTable(
	/**
	 * name:新建表的表名
	 * joinColumns:自己在新建表中的配置
	 * inverseJoinColumns:对方在新建表中的配置
	 */
	name="sys_user_role",
	/**
	 * name:自己在新建表的外键名
	 * referencedColumnName:指向自己的外键名
	 */
	joinColumns= {@JoinColumn(name="user_id",referencedColumnName="user_id")},
	inverseJoinColumns= {@JoinColumn(name="role_id",referencedColumnName="role_id")})
private Set<Role> roles = new HashSet<>();

​ 多的一方的配置(Role),放弃外键维护

/**
 * targetEntity:对方的字节码文件对象
 * mappedBy:自己在对方的集合名字
 */
@ManyToMany(targetEntity=User.class,mappedBy="roles")
private Set<User> users = new HashSet<User>();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值