@Entity
作用:设置一个类为实体类
- @Entity
- public class User {
- }
@Table
作用:设置实体类对应的表,常与@Entity一起使用
参数:name制定表名,不写的话,为实体类的类名
- @Entity
- @Table(name = "tbl_user")
- public class User {
- }
@Id
作用:设置对象标识符
- @Id
- private Integer id;
@GeneratedValue
作用:设置标识符的生成策略,常与@Id一起使用
参数:strategy指定具体的生成策略
方式一:@GeneratedValue(strategy=GenerationType.AUTO) 也是默认策略, 即写成@GeneratedValue也可。
类似于hibernate的native策略,生成方式取决于底层的数据库。
方式二:@GeneratedValue(strategy = GenerationType.IDENTITY)指定“自动增长”策略,适用于MySQL。
方式三:@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_tbl_user")指定“序列”策略,使用于Oracle。
@Column
作用:设置列
参数:
name:指定列名
unique:指定唯一约束
nullable:指定是否允许为空
length:长度
- @Column(name = "user_name", length = 255, nullable = true, unique = true)
- private String name;
@Temporal
作用:设置日期时间
方式一:@Temporal(TemporalType.DATE)映射为日期 // birthday date (只有日期)
方式二:@Temporal(TemporalType.TIME)映射为日期 // birthday time (是有时间)
方式三:@Temporal(TemporalType.TIMESTAMP)映射为日期 //birthday datetime (日期+时间)
- @Temporal(TemporalType.DATE)
- private Date birthday;
@Lob
作用:设置大数据类型
方式一:
- @Lob
- private String text; //text longtext
方式二:
- @Lob
- private byte[] image; // image longblob
@Enumerated
作用:设置枚举类型
方式一:
- /** 保存字符串到数据库 */
- @Enumerated(EnumType.STRING)
- private Role role;
方式二:
- /** 保存整数到数据库 */
- @Enumerated(EnumType.ORDINAL)
- private Role role;
上面定义的枚举:Role
- /** 角色 */
- public enum Role {
- 游客, 会员, 管理员
- }
使用:
- User user = new User();
- user.setRole(Role.管理员);
@Transient
作用:修饰的字段不会被持久化
- @Transient
- private String temp;
这样也可以:
- private transient String temp;
以上都这都是比较常用的。
以上的注解全部定义在javax.persistence下面。
@Table(name="promotion_info") --持久性映射的表(表名="promotion_info).@Table是类一级的注解,定义在@Entity下,为实体bean映射表,目录和schema的名字,默认为实体bean的类名,不带包名.
@Id--注释可以表明哪种属性是该类中的独特标识符(即相当于数据表的主键)。
@GeneratedValue --定义自动增长的主键的生成策略.
@Transient --将忽略这些字段和属性,不用持久化到数据库.适用于,在当前的持久类中,某些属性不是用于映射到数据表,而是用于其它的业务逻辑需要,这时,须将这些属性进行transient的注解.否则系统会因映射不到数据表相应字段而出错.
@Temporal(TemporalType.TIMESTAMP)--声明时间格式
@Enumerated --声明枚举
@Version --声明添加对乐观锁定的支持
@OneToOne --可以建立实体bean之间的一对一的关联
@OneToMany --可以建立实体bean之间的一对多的关联
@ManyToOne --可以建立实体bean之间的多对一的关联
@ManyToMany --可以建立实体bean之间的多对多的关联
@Formula --一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等)
@OrderBy --Many端某个字段排序(List)