标识在类上
@Table 当前表和实体 名称不一致的时候
标识在类上
@Id 用来描述主键
标识在属性上
@Basic 不写就等于写了 该属性关联映射
标识在属性
@column 当我们属性和字段不一致 限制表中字段的规范
length =10, 数据长度
nullable = false, 是否可以为空
unique = true, 是否是唯一健
columnDefinition = "varchar2(10 char) 自定义数据类型
precision =7 数据长度 =整数位+精度位
scale =2 数据精度
标识在属性
@Temporal 用来标识时间类型
3种
年月日 TemporalType.DATE
时分秒 TemporalType.TIME
年月日+时分秒 TemporalType.TIMESTAMP
@Transient 该属性字段不要去维护 不会去添加该字段 忽略该字段
标识在属性上
@Lob 标识二进制数 BLOB CLOB
主键生成策略的相关注解
@GeneratedValue(strategy=GenerationType.AUTO)
标识在主键字段上 用来描述主键生成策略
GenerationType.AUTO 自己选择 Hibernate会根据你当前映射的数据库 自动去生成主键策略
MYSQL 自增长 自动给你的表的主键 设置自增长
MSSQL 自增长 自动给你的表的主键 设置为自增长
ORACLE 序列 帮助我们自动建立一个HIBERNATE_SEQUENCE的序列
@GeneratedValue(strategy = GenerationType.IDENTITY) 自增长 MYSQL数据库
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "LIUYUN") ORACLE
generator = "LIUYUN" 我只能给你创建一个名叫hibernate_sequence 指定一个名叫LIUYUN的生成器
@SequenceGenerator(name="LIUYUN",sequenceName = "ACCOUNT_SEQ",allocationSize = 1)
Hibernate 专门新建一张表 t_zizengzhang 2个字段
pkColumnName ="pk",valueColumnName = "nowval",
pk nowval
Hello 0
Hello2 0
@Id
@GeneratedValue(strategy = GenerationType.TABLE,generator = "table_generator")
@TableGenerator(name="table_generator",table = "t_zizengzhang",pkColumnName ="pk",valueColumnName = "nowval",initialValue = 0,allocationSize = 1)
Hibernate内置的 uuid 不分数据库的
@GeneratedValue(generator = "uuid")
@GenericGenerator(name="uuid",strategy = "uuid")
MYSQL数据库有多种数据库引擎 内核
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect 支持事务 增删改而生
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect 不支持事务 查询而生