版本:hibernate-3.2.7
方法之一: 用uuid生成唯一的主键, 用这种方法,如果对象的id为null,保存时会自动生成一个UUID,如果id不为null,保存时会从数据库中找出这条记录,然后执行update,如果未找到是抛出异常。
<id name="id" type="java.lang.String" column="ID">
<generator class="uuid.hex" />
</id>
public class XXXClass{
/** id */
private String id;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
}
方法之二: 用org.hibernate.id.UUIDHexGenerator生成唯一的主键, 用这种方法,如果对象的id为null,保存时会自动生成一个UUID,如果id不为null,保存时会从数据库中找出这条记录,然后执行update,如果未找则执行insert。
<id name="id" type="java.lang.String" column="ID">
<generator class="AssignCopiedId" />
</id>
public class XXXClass implements AssignedIdModel{
/** id */
private String id;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
@Override
public String getAssignedId() {
return assignedId;
}
public void setAssignedId(String assignedId) {
this.assignedId = assignedId;
}
}
public interface AssignedIdModel {
public String getAssignedId();
}
import org.hibernate.engine.SessionImplementor;
import org.hibernate.id.UUIDHexGenerator;
public class AssignCopiedId extends UUIDHexGenerator {
public Serializable generate(SessionImplementor session, Object obj) {
if (obj instanceof AssignedIdModel
&& (((AssignedIdModel) obj).getAssignedId() != null
&& ((AssignedIdModel) obj).getAssignedId().trim().length() > 0)) {
return ((AssignedIdModel) obj).getAssignedId();
} else {
return super.generate(session, obj);
}
}
}
总结: 两种方法相比之下,方法一比较简单,能满足一般情况,项目中用的比较多。方法一无法处理时才用方法二,例如从其它系统数据库复制表的记录时用。
分享到:
相关推荐
常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略
关于Hibernate的各种主键生成策略与配置详解
Hibernate主键生成方式 1.identity方式 2.increment方式 3.assigned方式 4.sequence方式 5.native方式 6.UUID方式
hibernate中自动生成主键的办法
Hibernate主键生成策略.doc ··········
hibernate的主键生成策略介绍,详细介绍了有关hibernate的常用主键生成策略,希望对一些正在学习hibernate的同学有一定的帮助
Hibernate中主键生成策略,开发的时候经常会用到的我都整理到这里了~
Hibernate各种主键生成策略与配置详解 1、assigned 主键由外部程序负责生成,在 save() 之前...在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免。
NULL 博文链接:https://alpha2009.iteye.com/blog/1074750
Hibernate各种主键生成策略详解,包括 assigned increment hilo seqhilo sequence identity native uuid foreign uuid.hex sequence-identity 等
学习hibernate的好文档,了解hibernate框架必须有的书
hibernate主键一对一关联映射代码示例
hibernate 主键生成策略 说明简单,易懂,全面,
本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。
Hibernate主键生成策略.docHibernate主键生成策略.doc