资源描述
*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,主键策略,Hibernate,主键配置策略,Hibernate,对主键赋值,Generator,节点中,class,属性的值:,assigned,:主键由程序生成,无需,Hibernate,或数据库参与。,hilo,:通过,hi/lo,算法生成主键,需要额外的数据库保存主键生成的历史状态。,seqhilo,:通过,hi/lo,算法生成主键,但是主键生成的历史状态保存在,Sequence,中。使用于,Oracle,等支持,Sequence,的数据库。,increment,:主键按数值顺序递增。,indentity,:采用数据库提供的主键生成机制。,sequence,:采用数据库提供的,Sequence,机制。,native,:由,Hibernate,根据底层数据库自行判断采用,indentity,,,hilo,或,sequence,中的一种。,uuid.hex,:由,Hibernate,基于,128,位唯一值产生算法生成十六进制数(长度为,32,的字符串)。,uuid.string,:与,uuid.hex,一样,但是生成,16,位未编码的字符串,在,PostgreSQL,等数据库中会出错。,foreign,:由其他表的某字段作为主键。,主键赋值策略演示,使用,uuid.hex,不为对象的主键属性赋值,有什么效果?,如果又设置了主键赋值策略,又为对象的主键赋值,插入后,以哪个为准?,复合主键处理,普通方案,主键封装类方案,复合主键处理,-,普通方案,含有复合主键的,POJO,必须实现,Serializable,接口。,定义,equalse,方法。,定义,hashCode,方法。,映射配置文件:,复合主键处理,-,在查询条件中的应用,符合主键在,get,和,load,方法中做查询条件时,直接将为主键字段赋好值的,POJO,作为主键的值,传到,get,和,load,方法中即可,复合主键处理实例,-,普通方案,请参照课堂演示源码。,复合主键处理,主键封装类方案,将多个主键属性封装一个实现了,Serializable,接口的类中,,在,POJO,中包含主键封装类型的属性。,映射文件:,复合主键处理,-,在查询条件中的应用,符合主键在,get,和,load,方法中做查询条件时,直接将主键封装类的对象作为主键的值,传到,get,和,load,方法中即可,符合主键实例,主键封装类方案,请参照课堂演示源码。,
展开阅读全文