genetator方式:
- increment:集群下不上用
- identity:auto increment
- sequence:oracle
- hilo:专门生成id算法,高字节+低字节
- seqhilo
- uuid:universal unique id:全局统一id
- guid:global很少
- native:数据库自动选择生成方式
- select: 从一个表中取值
- foreign:外键方式,参照主表的主键生成
对不同数据库选取的方式
mysql :建议auto ,采用increment自增
oracle:建议sequence,优化
@annotation设置
@GeneratedValue
生成策略
使用@Id注解可以将实体bean中的某个属性定义为标识符(identifier). 该属性的值可以通过应用自身进行设置, 也可以通过Hiberante生成(推荐). 使用 @GeneratedValue注解可以定义该标识符的生成策略:
- AUTO - 可以是identity column类型,或者sequence类型或者table类型,取决于不同的底层数据库.
- TABLE - 使用表保存id值
- IDENTITY - identity column
- SEQUENCE - sequence
oracle sequence:
在类前面@SequenceGenerator(name="teacherSequence",sequenceName=")生成器名字
然后再get id前 @GeneratedValue(strategy=GenerationType.SEQUENCE,generator= "teacherSequence"
tableGenerator(name,table,plColumnName="key",valueColumnName="value",pkColumnValue="Teacher",allocationSize=1)
会生成一张表,两个字段,表明table,列名 key ,value, 第一条记录 teacher 1;