`
lifeiniao526
  • 浏览: 36692 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

Hibernate的复合主键映射

阅读更多

转自http://yangfei520.blog.51cto.com/1041581/310555

1>.学过hibernate的都知道用<id>来配置主键生成策略,显然,它只能配置主键是单列的表,对于联合主键的情况<id>就无能为力了。今天翻到个复合主键映射的资料,觉得还是有一定价值的,就写了下来,以备后用。
2>.hibernate处理复合主键映射是基于这样一种做法:把目标类中所有主键关联属性抽出来,单独写成一个类(我暂且叫它主键类),目标类就只需持有主键类对象,而不必再包含各个主键属性;在映射文件中使用<composite-id>标签来配置主键对象并指出关联属性,普通属性照常配置;hibernate只会创建一张表在,并且把主键设置为主键类各属性的联合主键,存储和加载数据时,会自然的把关联对象各属性跟表中的主键字段对应起来。在这个操作过程中,它要求主键类必须是序列化的,并且要覆盖equals方法,最好覆盖hashCode方法。(我试验过了,不覆盖equals和hashCode,结果没有出现任何问题,而且从输出的sql语句看,也没有影响数据库操作,不知道它是否还有更深的含义?还希望高手给指点下)
3>.例子。一个规模较大公司的部门表(hibernate_dept_compositePK),由所在区域(area),部门名(name),本部门人数(empCount),组建时间(birthday)等字段组成,我们使用所在区域和部门名做联合主键:

1.目标类:Department.java

2.主键类:DepartmentPK.java

3.映射文件Department.hbm.xml

4.hibernate配置文件hibernate.cfg.xml

5.测试类:DepartmentTest.java

4.相对来说,复合主键映射用起来事很复杂的,无论是开发时还是升级时。所以,人们往往宁愿选择增加个主键字段,也不尽量不适用它。

分享到:
评论

相关推荐

    hibernate复合主键映射

    复合主键映射 &lt;br&gt;通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用标签进行映射,其它属性采用正常映射

    hibernate 无主键表映射

    hibernate 无主键表映射资源说明: 1. 简单Demo 2. Demo对应的sql语句 3. 对应博客文档

    Java的Hibernate框架中复合主键映射的创建和使用教程

    复合主键映射用起来比普通的增加主键字段要复杂,这里我们就来共同学习Java的Hibernate框架中复合主键映射的创建和使用教程,需要的朋友可以参考下

    Hibernate学习笔记

    023 复合主键 关联映射 024 其它 关联映射 025 hibernate 悲观锁、乐观锁 026 hibernate 操作树形结构 027 hibernate 查询语言(HQL) 028 hibernate 缓存(性能优化策略) 029 hibernate 抓取策略

    Hibernate入门(代码+笔记)

    总共分5部分:1和2为hibernate入门,3为hibernate实体映射,4为hibernate复合主键,5为hibernate实体层设计.

    Hibernate映射配置入门进阶详解

    1)根元素映射&lt;hibernate-mapping/&gt; 2)类映射 3)属性映射 4)主键的配置 5)主键生成策略 复合主键策略 史上最详细

    hibernate学习笔记

    复合(联合)主键映射(hibernate_composite) 27 集合(collection)映像 (hibernate_collection) 28 Hibernate 对数据库的并发支持 30 悲观锁(hibernate_pessimistic) 30 乐观锁(hibernate_optimistic) 32 HQL...

    Hibernate3.1_学习源码

    04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计都会为一个表添加一个自动增长的主键标识列。其中重点配置方法和Hibernate中普遍采用的方法链编程的使用。还需注意可以将组合主键构建...

    Hibernate Annotations 中文文档

    2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4...

    J2EE三大框架_笔记_a

    18-Hibernate复合主键笔记 20-22Hibernate_容器映射技术笔记 23-26Hibernate数据关联技术笔记 27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate多对多案例笔记 J2EE框架_...

    hibernate注解案例

    Hibernate 的注解学习 ExportDBAnnotation HibernateAnnotationUtils 【一对一】关系映射【一对多】关系映射 【多对多】关系映射 【composite复合主键】关系映射【component组件】关系映射

    J2EE框架_笔记_c

    18-Hibernate复合主键笔记 20-22Hibernate_容器映射技术笔记 23-26Hibernate数据关联技术笔记 27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate多对多案例笔记 J2EE框架_...

    hibernate annotation 中文文档

    2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4.3.1. ...

    J2EE框架_笔记_b

    18-Hibernate复合主键笔记 20-22Hibernate_容器映射技术笔记 23-26Hibernate数据关联技术笔记 27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate多对多案例笔记 J2EE框架_...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类集合  15.3.4 把多对多关联分解为两个一对多关联 ...

    javaEE框架笔记,识货人下

    18-Hibernate复合主键笔记.pdf 19-Hibernate实体层设计笔记.pdf 2-JSP+JDBC_真分页(基于Oracle数据库分页)笔记.pdf 20-22Hibernate_容器映射技术笔记.pdf 23-26Hibernate数据关联技术笔记.pdf 27-32Hibernate数据...

    hibernate annotation帮助文档

    2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4...

Global site tag (gtag.js) - Google Analytics