作用:设置一个类为实体类
@Table
作用:设置实体类对应的表,常与@Entity一起使用
参数:name制定表名,不写的话,为实体类的类名
@Id
作用:设置对象标识符
@GeneratedValue
作用:设置标识符的生成策略,常与@Id一起使用
参数:strategy指定具体的生成策略
@GeneratedValue(strategy=GenerationType.AUTO) 使用数据库默认配置。
@GeneratedValue(strategy = GenerationType.IDENTITY)指定“自动增长”策略,适用于MySQL。
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_tbl_user")指定“序列”策略,适用于Oracle。
- @Entity
- @Table(name = "tbl_user")
- public class User {
- @Id
- @GeneratedValue
- private Integer id;
-
- }
@Column
作用:设置列
参数:
name:指定列名
unique:指定唯一约束
nullable:指定是否允许为空
inserttable:是否可以插入
updateable:是否可以更新
columnDefinition: 定义建表时创建此列的DDL
length:长度
- @Column(name = "user_name", length = 255, nullable = true, unique = true)
- private String name;
@Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")
这样,对应字段就可以按照指定的精度进行insert。可以对double等数据处理。
@Temporal
作用:设置日期时间
方式一:@Temporal(TemporalType.DATE)映射为日期 // birthday date (只有日期)
方式二:@Temporal(TemporalType.TIME)映射为日期 // birthday time (是有时间)
方式三:@Temporal(TemporalType.TIMESTAMP)映射为日期 //birthday datetime (日期+时间)
@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;
以上都这都是比较常用的。
@OrderBy(name = "group_name ASC, name DESC")
@OneToMany(cascade = CascadeType.ALL, mappedBy = "oneId")//指向多的那方的pojo的关联外键字段
@ManyToMany
@JoinTable(name = "TMANY1_TMANY2", joinColumns = {@JoinColumn(name = "MANYA_ID", referencedColumnName = "MANYA_ID")
@Pattern String
通过正则表达式来验证字符串
@Pattern(regex="[a-z]{6}")
@Email
@Min
@Max
@JoinColumn标记
GenerateValue的机制 strategy
比较特殊的地方
1. 使用UUID(两个不同实现版本Hibernate和OpenJPA有点不同)
2.使用@GeneratedValue(strategy=GenerationType.IDENTITY)
3.如果使用数据库表的字段生成---GenerationType.TABLE
以上的注解全部定义在javax.persistence下面。