收藏 分销(赏)

Hibernate_OID生成策略.doc

上传人:xrp****65 文档编号:9854944 上传时间:2025-04-10 格式:DOC 页数:10 大小:52.50KB
下载 相关 举报
Hibernate_OID生成策略.doc_第1页
第1页 / 共10页
Hibernate_OID生成策略.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
OID生成策略 hibernate使用OID唯一标示一个po对象 数据库使用主键唯一标示一个实体 hbm.xml: id 指定OID(对象标识符) generator 指定生成主键的主要方式 native 根据底层数据库对自动生成标识符的支持能力, 来选择主键生成方式 oracle 自动生成hibernate_sequence的序列 increment Hibernate生成,select max(STUDENTID) 作为主键 适合所有数据库 identity 由底层数据库(支持自动增长)生成,常用于sqlserver mysql sequence 由数据库提供的序列生成,适合Oracle Assigned 通过程序指定 不指定generator时的默认 uuid 使用全球唯一标示生成主键 常用配置: <generator class="native" /> mysql: <generator class="identity" /> oracle: <generator class="sequence" > <param name="sequence">SEQ_STUDENT</param> </generator> JPA使用 @GeneratedValue指定ID生成策略: @Id @Column(name="TEACHERID") @GeneratedValue(strategy=GenerationType.AUTO) //oracle 指定序列名称 @SequenceGenerator(name="seq_teacher",sequenceName="SEQ_TEACHER",allocationSize=1) @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_teacher") //mysql: @GeneratedValue(strategy=GenerationType.IDENTITY) 映射自然主键(不指定自动增长的主键) hbm.xml <generator class="assigned" /> JPA: @GeneratedValue(strategy=GenerationType.AUTO) 映射自然复合主键 映射文件版本 /*==============================================================*/ /* Table: job 映射联合主键例子: 职位表 */ /*==============================================================*/ create table job( jobNo number(5) not null, jobName varchar2(20) not null, jobDesc varchar2(50), constraint PK_job primary key(jobNo,jobName) --指定复合主键 ) Pojo类 //复合主键类 /** * 复合主键类要求: * 1.implements java.io.Serializable * 2.重写equals hashCode */ public class JobId implements java.io.Serializable { private Integer jobNo; private String jobName; //重写equals hashCode //equsls 判断两个对象相等条件为jobNo和jobName都相等 @Override public boolean equals(Object other) { if ((this == other)) return true; if ((other == null)) return false; if (!(other instanceof JobId)) return false; JobId jobId = (JobId) other; if(!jobNo.equals(jobId.getJobNo())) return false; if(!jobName.equals(jobId.getJobName())) return false; return true; } @Override public int hashCode() { int result ; result =(jobNo == null ? 0 : jobNo.hashCode()); result = 37 * result+ (jobName == null ? 0 : jobName.hashCode()); return result; } } Job类 public class Job { private JobId id; //联合主键类作为成员 private String jobdesc; } Job.hbm.xml映射文件 <hibernate-mapping package="org.px.ch4.dao.po"> <class name="Job" table="JOB" > <!-- composite-id 指定复合主键类 --> <composite-id name="id" class="JobId"> <key-property name="jobNo" type="java.lang.Integer" > <column name="JOBNO" precision="2" scale="0" /> </key-property> <key-property name="jobName" type="java.lang.String"> <column name="JOBNAME" length="20" /> </key-property> </composite-id> <property name="jobdesc" type="java.lang.String"> <column name="JOBDESC" length="50" /> </property> </class> </hibernate-mapping> 测试例子参见: JobDAOImpl.java JobDAOTest.java Annotation联合主键版本 1. 使用@EmbeddedId注解标示联合主键类成员 @Entity public class Job { private static final long serialVersionUID = -4660865172058580473L; private JobId id; //联合主键类作为成员 并且联合主键类的属性可以使用@Column private String jobdesc; @EmbeddedId public JobId getId() { return this.id; } } 2. 类注解为@IdClass,并将该实体中所有属于主键的属性都注解为@Id. @Entity @IdClass(JobId.class) public class Job { private static final long serialVersionUID = -4660865172058580473L; private String jobdesc; private Integer jobNo; private String jobName; @Id public Integer getJobNo() { return jobNo; } @Id public String getJobName() { return jobName; } } SchemaExport hiberante的生成数据库表(及其他ddl)的工具类 可以通过这个工具类完成一些ddl public static void main(String[] args) { Configuration config=new Configuration(); config.configure("hibernate.cfg.xml"); SchemaExport export=new SchemaExport(config); export.create(true, true); //参数1 是否在控制台输出语句 参数2 是否执行ddl }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服