`
Wind_ZhongGang
  • 浏览: 264117 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate ORM Component

阅读更多

  Hibernate提倡在建模时,进行细粒度的控制。这个抽象的概念可以这样理解,一般在进行Hibernate持久化对象建模时,一个对象对应一个配置文件,在配置文件中的属性都有这样一个对象中的属性对应。试想如果一个对象的属性有十几二十个,那么这个对象显然就会变得很大,尤其是getter和setter方法。这样显然会增加对象的复杂度,使得对象变得难以理解。那这时该怎么办呢。Hibernate为我们提供了这样一个途径。那就是利用Component。即这么多属性中必然有些属性是在概念上相近的,如一个Person对象中有这样三个属性,firstname,middlename,lastname,这三个属性都和名字有关,所以可以提成一个Name对象作为Person的Component。这就是Hibernate提倡的细粒度控制了。这样对象就变得易于理解,更为接近现实中的情况,使项目变得易于扩展和维护。那代码上具体如何实现呢。

 

  1.FullName.java

 

package com.template.model.person;

/**
 * Created by IntelliJ IDEA.
 * User: ZhongGang
 * Date: 11-7-21
 * Time: 下午8:22
 * To change this template use File | Settings | File Templates.
 */
public class FullName {
    private String firstName;
    private String middleName;
    private String lastName;

    public FullName() {
    }
}

 

  2.Name.java

 

package com.template.model.person;

/**
 * Created by IntelliJ IDEA.
 * User:ZhongGang
 * Date: 11-7-21
 * Time: 下午8:22
 * To change this template use File | Settings | File Templates.
 */
public class Name {
    private FullName fullName;
    private String nickName;

    public Name() {
    }
}

 

 

  3.Address.java

 

package com.template.model.person;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-21
 * Time: 下午8:24
 * To change this template use File | Settings | File Templates.
 */
public class Address {
    private String street;
    private String city;
    private String country;

    public Address() {
    }
}

 

 

  4.Human.java

 

package com.template.model.person;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-21
 * Time: 下午8:21
 * To change this template use File | Settings | File Templates.
 */
public class Human extends BasicDomain {
    private Name name;
    private Address address;

    public Human() {
    }
}

 

 

  5.Human.hbm.xml

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.person.Human" table="human">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="active" column="active" type="java.lang.Boolean"/>
        <component name="name" class="com.template.model.person.Name">
            <component name="fullName" class="com.template.model.person.FullName">
                <property name="firstName" column="firstname" type="java.lang.String"/>
                <property name="middleName" column="middlename" type="java.lang.String"/>
                <property name="lastName" column="lastname" type="java.lang.String"/>
            </component>
            <property name="nickName" column="nickname" type="java.lang.String"/>
        </component>
        <component name="address" class="com.template.model.person.Address">
            <property name="street" column="street" type="java.lang.String"/>
            <property name="country" column="country" type="java.lang.String"/>
            <property name="city" column="city" type="java.lang.String"/>
        </component>
    </class>

</hibernate-mapping>

 

  从Name和FullName可以看出,Hibernate支持多层的Component嵌套。

 

  如果想实现从Name知道是哪个Human,应该怎么办呢?看下面的代码。只须作稍许的修改。

 

  Name.java

 

package com.template.model.person;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-21
 * Time: 下午8:22
 * To change this template use File | Settings | File Templates.
 */
public class Name {
    private FullName fullName;
    private String nickName;

    private Human human;

    public Name() {
    }

    public Human getHuman() {
        return human;
    }

    public void setHuman(Human human) {
        this.human = human;
    }
}

 

 

  Human.hbm.xml

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.person.Human" table="human">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="active" column="active" type="java.lang.Boolean"/>
        <component name="name" class="com.template.model.person.Name">
            <parent name="human"/>
            <component name="fullName" class="com.template.model.person.FullName">
                <property name="firstName" column="firstname" type="java.lang.String"/>
                <property name="middleName" column="middlename" type="java.lang.String"/>
                <property name="lastName" column="lastname" type="java.lang.String"/>
            </component>
            <property name="nickName" column="nickname" type="java.lang.String"/>
        </component>
        <component name="address" class="com.template.model.person.Address">
            <property name="street" column="street" type="java.lang.String"/>
            <property name="country" column="country" type="java.lang.String"/>
            <property name="city" column="city" type="java.lang.String"/>
        </component>
    </class>

</hibernate-mapping>
0
0
分享到:
评论
3 楼 hcchanqing 2012-11-13  
Wind_ZhongGang 写道
hcchanqing 写道
真心没看明白。。。

哪不明白?

Component这个。可以留个QQ吗?
2 楼 Wind_ZhongGang 2012-11-12  
hcchanqing 写道
真心没看明白。。。

哪不明白?
1 楼 hcchanqing 2012-11-12  
真心没看明白。。。

相关推荐

    Hibernate_code

    对于那些刚开始学习Hibernate或者想要深入理解ORM(对象关系映射)机制的人来说,这是一个非常宝贵的资源。 **知识点详解:** 1. **Hibernate框架**:Hibernate是一个开源的Java持久化框架,它提供了一种在Java...

    JEECG HIBERNATE

    其中,`Hibernate`是JEECG的一个重要组成部分,它是Java领域中广泛使用的对象关系映射(ORM)框架,使得开发者可以通过面向对象的方式来操作数据库,而无需关心底层SQL的编写。 **1. Hibernate基础** Hibernate允许...

    Hibernate_test

    Hibernate是Java领域中一款广泛应用的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以使用面向对象的方式来操作数据库。在"Hibernate_test"这个主题中,我们将深入探讨Hibernate的...

    SpringMVC+Spring+hibernate配置

    最后,Hibernate是Java的ORM框架,它将数据库操作与业务逻辑解耦。配置Hibernate包括: 1. 引入Hibernate依赖:添加Hibernate库到项目中。 2. 配置Hibernate:创建hibernate.cfg.xml文件,设置JDBC连接、方言、缓存...

    springmvc+hibernate+定时器配置实例

    Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互;而定时器则用于在特定时间执行特定任务,常见的如数据清理、统计分析等。下面将详细介绍这三个组件以及如何将它们结合在一起进行...

    hibernate组件映射

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了Java应用与数据库之间的交互。在Hibernate中,组件映射是将一个类的实例作为另一个类的一个属性进行持久...

    Hibernate中文参考文档

    **Hibernate** 是一个用于 Java 环境下的开源 **对象/关系映射 (Object/Relational Mapping, ORM)** 工具。它通过将 Java 类映射到数据库表,并将 Java 对象映射到表中的记录,从而实现了数据持久化。 ##### 1.1 ...

    spring-hibernate注解配置源码

    接下来,讨论Hibernate,这是一个流行的ORM(对象关系映射)框架,它允许开发人员用Java对象模型来操作数据库。在注解配置下,我们不再需要`hibernate.cfg.xml`配置文件,而是使用`@Entity`注解标识实体类,`@Table`...

    spring整合struts2与hibernate核心配置文件

    而Hibernate则是一个ORM(对象关系映射)框架,它简化了数据库操作,使开发者可以专注于业务代码而不是SQL。 **Spring框架** Spring是Java企业版(Java EE)开发中的关键组件,它的核心特性包括依赖注入(DI)和...

    hibernate-4.3.10

    Hibernate支持三种持久化模型:实体(Entity)、值对象(Value Object)和组件(Component)。实体是与数据库表对应的Java对象;值对象用于封装业务逻辑中的数据;组件则用来表示一个对象的组成部分。 5. **级联...

    完整版spring hibernate整合采用annotation

    Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的ORM(对象关系映射)工具,用于简化数据库操作。当我们将这两个框架整合在一起时,...

    springmvc + hibernate annotation 配置

    而Hibernate则是一个对象关系映射(ORM)工具,它简化了Java应用程序与数据库之间的交互,通过注解可以方便地定义对象和表之间的映射关系。 接下来,我们讨论如何将Spring MVC与Hibernate整合,以便在项目中使用...

    Spring3整合Hibernate4测试Demo

    而Hibernate则是一个强大的对象关系映射(ORM)工具,它简化了数据库操作,使得开发者可以使用Java对象来处理数据。当这两个框架整合在一起时,可以提供高效、灵活且易于维护的解决方案。 在"Spring3整合Hibernate4...

    SSH2 annotation 实现struts2.1.6 spring2.5.6 hibernate3.3 全注解开发

    3. **Hibernate3.3**:Hibernate是一个对象关系映射(ORM)框架,允许开发者用Java对象的方式来操作数据库。在3.3版本中,它支持了延迟加载(Lazy Loading),这是一种优化性能的技术,只在真正需要时才加载关联的...

    使用SpringWeb框架开发的电子商务网站,在后台使用Hibernate处理数据库.zip

    SpringWeb是Spring框架的一个关键组成部分,主要用于构建Web应用程序,而Hibernate则是一个流行的对象关系映射(ORM)工具,它简化了Java应用与数据库之间的交互。 **SpringWeb框架** SpringWeb框架提供了MVC...

    《Hibernate 各类映射文件与配置文件模板》HibernateMappingConfig.zip

    Hibernate是Java领域的一个流行的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个压缩包中,我们能看到不同类型的映射文件(.hbm.xml)和一个核心配置文件...

    hibernate结构框架及组要实现类的深入分析

    Hibernate 是一款流行的 Java ORM(对象关系映射)框架,它允许开发者将数据库操作转化为对 Java 对象的操作,简化了数据库应用的开发。在深入分析 Hibernate 结构框架之前,我们先来了解一下核心概念。 **1. ...

    component(组件映射)

    在Java开发领域,组件(Component)映射是框架如Spring或Hibernate中的一种核心概念,用于实现对象关系映射(ORM)或依赖注入(DI)。在这个主题中,我们将深入探讨组件映射的概念、它的重要性以及如何在实际应用中...

Global site tag (gtag.js) - Google Analytics