JPA入门
什么是JPA
-
JPA(Java Persistence API)概述
JPA是一个接口,所有的ORM框架都实现了此接口
-
JPA的作用
通过注解与xml文件配置的方式实现表与持久化类之间的映射关系
表与持久化类的映射关系用注解,数据库核心配置依然使用xml
JPA环境的搭建、使用
-
需要使用的jar包
16个hibernate的jar包、1个JPA的包
-
表与持久化类的映射(注解方式)
类上的配置:
@Entity //标识当前类是持久化类
@Table(name="表名") //当前持久化类与哪个表映射
属性上的配置:
@Id //当前属性是oid
@Column(name="主键名") //和表的哪个字段做映射
@GeneratedValue(strategy=GenerationType.IDENTITY) //指定oid的增长策略
-
数据库核心配置文件
核心配置文件需要建在src/META-INF/persistence.xml其中的xml配置文件的约束:
hibernate-entitymanager-5.0.7.Final.jar/org.hibernate.jpa/persistence_2_0.xsd的24-26行
配置信息与hibernate的相似
- 与hibernate配置文件使用的不同点
//1.全查用getResultList()
//2.条件查,首个问好从1开始而不是0
//3.聚合差,用getSingleResult()
-
一对多的配置
一一方的配置:
/**
* 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;
-
多对多的配置
多的一方配置(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>();
3447

被折叠的 条评论
为什么被折叠?



