JPA教程(基础API、Spring整合、Springboot整合)
JPA springdata 整合jpa 根据类创建表 无则建有则更 接口增删改查操作 类比springdata整合mongdb和es等
**一、**常见注解
注解 只有在spring或springboot环境下才可以在属性上加注解,否则强制getXX方法上加
@Entity 标志实体
@Table 别名,默认为实体名
@Id 必不可少 否则报错 指定主键
@GeneratedValue(strategy,generator) mysql支持identity、oracle支持sequence、auto默认自动选择、table通过表生成
@Column 标注的 columnDefinition 属性: 表示该字段在数据库中的实际类型 Date属性无法自动,String默认对应varchar
@Transient 忽略映射 自定义的getXX方法加上此注解 Spring环境下如果找不到对应属性会自动忽略
@Basic 表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的 getXxxx() 方法,默认即为@Basic
@Basic(fetch = FetchType.LAZY,optional = false) 懒加载、不允许为空
@Temporal(TemporalType.TIMESTAMP) 指定日期在数据库的类型 如date--年月日,timestamp年月日时分秒
映射关系相关注解 注意区分单向和双向映射
@JoinColumn(name="CUSTOMER_ID") 外键方
@ManyToOne(fetch=FetchType.LAZY) mappedby不和上面注解一起用 默认EAGER左外连接,懒加载获取时才查两次
@ManyToMany
@OneToOne
**二、**实体的状态:
- 新建状态: 新创建的对象,尚未拥有持久性主键。 new没ID
- 游离状态:拥有持久化主键,但是没有与持久化建立上下文环境new 有ID
- 持久化状态:已经拥有持久性主键并和持久化建立了上下文环境
- 删除状态: 拥有持久化主键,已经和持久化建立上下文环境,但是从数据库中删除
**三、**使用JPA持久化对象的步骤
1,创建 persistence.xml, 在这个文件中配置持久化单元
需要指定跟哪个数据库进行交互;
需要指定 JPA 使用哪个持久化的框架以及配置该框架的基本属性
2,创建实体类, 使用 annotation 来描述实体类跟数据库表之间的映射关系.
使用 JPA API 完成数据增加、删除、修改和查询操作
3,创建 EntityManagerFactory可指定属