浅析Hibernate映射(四)——组件映射(component)

Component映射

在hibernate中Component映射采用<component>标签即可

Component是某个实体的逻辑组成部分,它与实体类的主要差别在于,它没有oid
Component在DDD中被称为值类

采用Component的好处:实现对象模型的细粒度划分,复用率高,含义明确,层次分明

对象模型与关系模型的设计恰恰相反,对象模型一般是细粒度的,关系模型一般是粗粒度的

示例:

对象模型:

关系模型:

映射文件:

Employee.hbm.xml

[html] view plaincopyprint?

  1. <hibernate-mapping>
  2. <class name="com.jialin.hibernate.Employee" table="t_emplyee">
  3. <id name="id">
  4. <generator class="native"/>
  5. </id>
  6. <property name="name"/>
  7. <component name="employeeContact">
  8. <property name="email"/>
  9. <property name="address"/>
  10. <property name="zipCode"/>
  11. <property name="contactTel"/>
  12. </component>
  13. </class>
  14. </hibernate-mapping>

User.hbm.xml

[html] view plaincopyprint?

    1. <hibernate-mapping>
    2. <class name="com.jialin.hibernate.User" table="t_user">
    3. <id name="id">
    4. <generator class="native"/>
    5. </id>
    6. <property name="name"/>
    7. <component name="userContact">
    8. <property name="email"/>
    9. <property name="address"/>
    10. <property name="zipCode"/>
    11. <property name="contactTel"/>
    12. </component>
    13. </class>
    14. </hibernate-mapping>
时间: 2024-10-14 09:16:23

浅析Hibernate映射(四)——组件映射(component)的相关文章

hibernate中的组件映射

组件映射 1 项目:hibernate_1100_component 2 对象关系:一个对象是另外一个对象的一部分 3 数据库表:一张表 4 annotation: @ Embeddable @Embbeded 对象模型 Husband(id,name,wife) Wife(name,age) Annotation: 在Husband的wife属性上建立注解 @Embedded 表明该对象是从别的位置嵌入过来的,是不需要单独映射的表. 这种方式生成的表为husband(id,name,wifen

.Hibernate一对一映射与组件映射

1.按照外键映射(Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射) 实现需要: 创建实体类Users1和Resume1 public class Users1 { private Integer userid; private String username; private String userpass; private Resume1 resume1; } *********** public class Resume1 { private Integer

Hibernate的组件(Component)映射

在学习Hibernate框架时碰到了许多实际的问题,比如一个Name是由FirstName和LastName组成,或者说一个Address是有Province,City,County和The detailed address组成,那么这么复杂的属性作为实际设计中是不应该出现在一个类里,那么组件映射就出现了 下面展示组件映射的实例,User对象中的Name属性 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLI

(13)Hibernate组件映射

不相信自己的人 连努力的价值都没有. 类组合关系的映射,也叫做组件映射! 注意:组件类和被包含的组件类,共同映射到一张表! 需求: 汽车与车轮 生成的表:主键.汽车名称.轮胎大小.轮胎数量 Wheel.java package com.rk.hibernate.m_component; public class Wheel { private int count; private int size; public int getCount() { return count; } public v

Hibernate缓存、组件、继承映射

Hibernate缓存.组件.继承映射 三种状态: 临时状态:不受session管理,没有提交到数据库:没有执行sql之前,new对象的时候: 持久化状态:受session管理,提交到数据库:正在执行sql 游离状态:不受session管理,提交到数据库:session关闭后 Cache缓存:会先看看缓存里有没有,有就取出来,没有就到数据库取数据. Session的三个方法:flush.evict.clear 不同session不会共享数据. List与iterator的区别: List是直接到

Hibernate之组件映射

1:为什么要使用组件映射 答:建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系.以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键参照关系,当每次查询员工信息时,都需建立者两个表的连接.建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表EMPINFO中. 2:什么是组件映射:组件是一个被包含的对象,它和它的所有者同存于一张表中,

框架 day33 Hibernate,组件映射,继承映射,抓取(检索)策略-优化,检索方式总结

组件(组成)映射 例1: public class Person { private Integer pid; //OID 值 private String name; //第一种方案 private String homeAddr; private String homeTel; private String companyAddr; private String companyTel; ↑一般项目都都采用此方案() *通过面向对象角度,使用设计模式(组件|组合),将数据都抽取到一个对象中.将

hibernate组件映射

组件映射,一个类是另外一个类的一部分,比如学生证类是学生类的一部分,在表里的关系,学生证信息的学生表信息的一部分,此时就需要用组件映射, 本例中,wife是husband的一部分. Wife类: package com.oracle.hibernate; /** * wife是husband的一部分 * wife示husband属性表的一部分, *所以wife没有id */ public class Wife { /** * 注意wife类里的属性名不能和husband类里的属性名冲突 * 如果

Hibernate复习(四)常见的映射类型A

1.many-to-one 属性如下: ? name:设定待映射的持久化类的属性名. ? column: 设定和持久化类的属性对应的表的外键. ? class:设定持久化类的属性的类型. 2.set <set>元素包括以下属性: – name: 设定待映射的持久化类的属性名 – cascade: 当取值为"save-update",表示级联保存和更新. – inverse:当取值为"true",表示在双向关联中,这一端为镜像端. ? <set>

Hibernate中一对一关联映射/组件映射

Hibernate映射:一对一关联 1.按照外键映射 2.按照主键映射 组件映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射