ID的生成策略(hibernate的id生成策略,主键类为什么需要实现序列化接口,同时还要重写hashCode()和equals()方法)
来源:互联网 发布:淘宝上那家卖警服 编辑:程序博客网 时间:2024/05/16 01:56
在数据库中,通常主键都有自动增长功能。如:mysql中用auto_increment oracle中用sequence,sql server中用identity。hibernate在生成数据库表时,如何让其主键具有自动增长呢??
一.单主键(只有一个属性作为主键):
1.xml方式:
generator,常用4个:uuid(全球唯一) native(跨数据库平台) identity(sql server) sequence(oracle),帮助文档有详细的说明。
<id name="id" column="id">
<generator class="native"></generator>
</id>
2.annotation:使用注解
@GeneratedValue 默认为auto(相当于native)
Identity
Sequence
Table
/*@TableGenerator(
name="teaDb", //tableGenerator名字
table="ID_GEN", //表名
pkColumnName="pk_key", //生成表的主键
valueColumnName="pk_value", //生成表的值
pkColumnValue="teacher", //记录的key值
allocationSize=1//增长的步长,当取完一次值后,然后自动加上几
)*/
@TableGenerator(
name="empGen",
table="ID_GEN",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="EMP_ID",
initialValue=1,
allocationSize=1)
@SequenceGenerator(name="teacherSEQ",sequenceName="teaSeq_Db")//指定sequence生成器的名字
二.联合主键:
1.xml方式:使用composite-id。如:
<composite-id name="pk" class="StudentPk">
<key-property name="id"></key-property>
<key-property name="name"></key-property>
</composite-id>
2.annotation方式:
1.主键类注解为:@Embeddable,将主键属性注解为:@Id
2.将主键的属性注解为:@EmbeddedId
3. @IdClass(value=TeacherPk.class)和@Id
主键类为什么要序列化?如果多个该类对象同时放入内存中,在一个集群系统中, 其中一台服务器当机了,需要将内存中对象写到其它服务器。 同时,如果该服务器内存以满,需要用虚拟内存,这就需要序列化后才能写到硬盘上 主键类为什么需要重写hashCode()和equal()方法呢?这是为了保证对象唯一性的。 将许多对象放在内存中,他们之间用什么区分呢?数据库中用那个主键来区分的, 因此在这儿应该重写hashCode()和equal()方法
- ID的生成策略(hibernate的id生成策略,主键类为什么需要实现序列化接口,同时还要重写hashCode()和equals()方法)
- ID的生成策略(hibernate的id生成策略,主键类为什么需要实现序列化接口,同时还要重写hashCode()和equals()方法)
- equals和hashCode方法重写 以及hibernate的联合主键生成策略的生成类的生成
- Hibernate的ID主键生成策略
- Hibernate学习笔记(三)----ID生成策略、联合主键
- Hibernate的ID生成策略
- hibernate的ID生成策略
- Hibernate的ID生成策略
- Hibernate的ID生成策略
- Hibernate的ID生成策略
- Hibernate的ID生成策略
- Hibernate的ID生成策略
- Hibernate的ID生成策略
- hibernate的ID生成策略
- hibernate的ID生成策略
- hibernate的ID生成策略
- Hibernate的ID生成策略
- Hibernate的ID生成策略/联合主键解决方案
- [收集]JAR转EXE的几种工具和方法
- 笑傲江湖
- 系统程序员成长计划 学习笔记(2) -- Write Less
- 相关网站收录
- javaScript 验证表单
- ID的生成策略(hibernate的id生成策略,主键类为什么需要实现序列化接口,同时还要重写hashCode()和equals()方法)
- ajax
- 全国男生录取老婆统一考试试卷
- swfupload+ffmpeg实现视频上传并生成缩略图
- 详细QQ等级明细
- ubuntu下跑魔兽世界
- 贞观之治
- 敏捷开发简介
- GDB学习