JPA-基本注解
Posted luliang888
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA-基本注解相关的知识,希望对你有一定的参考价值。
1. @Entity:在实体类上进行标注,指出该Java类为实体类,将映射到指定的数据库表;
@Entitypublic class DeptEntity
2. @Table:当实体类与映射的表名不相同时,需要使用此注解标注,该注解与@Entity并列使用:
》name:用于指定数据库的表名;
》schema:用户指定数据库的名称;
@Entity @Table(name = "dept", schema = "yootk") public class DeptEntity
3. @Id:用于申明主键列,可以申明在属性上,也可以申明在get方法上
4. @GeneratedValue:用于标注主键的生成策略,通过strategy属性进行指定,默认情况下,JPA自动选择一个适合底层数据库的实现策略
》strategy指定策略:
GenerationType.IDENTITY:id自增,oracle不支持
GenerationType.AUTO:自动选择合适策略
GenerationType.SEQUENCE:通过序列生成主键,通过@SequenceGenerator()注解指定序列名,mysql不支持
GenerationType.TABLE:通过表产生主键,框架借由表模式序列产生主键,使用该策略更易于数据库的移植
@Entity @Table(name = "dept", schema = "yootk") public class DeptEntity @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long deptno;
5. @Basic:表示属性到数据库表的字段的映射,默认为@Basic,可以不用写
》fetch: 表示该属性的读取策略,有 EAGER 和 LAZY 两种,分别表示主支抓取和延迟加载,默认为 EAGER.
》optional:表示该属性是否允许为null, 默认为true
6. @Column:当实体的属性与其映射的数据库表的列不同名时需要使用,当字段名称相同时,可以不用写
@Basic @Column(name = "dname") private String dname;
7. @Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
@Transient private Double avgsal;
以上是关于JPA-基本注解的主要内容,如果未能解决你的问题,请参考以下文章