`
jianchen
  • 浏览: 340590 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernate学习之第八篇

阅读更多

组件映射

关联的属性是个复杂类型的持久化类,但不是实体即:数据库中没有表与该属性对应,但该类的属性要持久保存的。

对于单表的对象细分,在hibernate中可借助Component节点的定义完成。
何谓Component?从名字上来看,既然称之为组件,则其必然是从属于某个整体的一个组成部分。在hibernate语义中,我们将某个实体对象中的一个逻辑 组成成为Component。

component与实体对象的根本差别,就在于Component没有标识,它作为一个逻辑组成,完全从属于实体对象。
示例:

 <component name="userName">
            <property name="firstName" column="first_name"></property>
            <property name="lastName" column="last_name"></property>
 </component>

 

user类代码如下:

public class User{

    private int id;
    private Name userName;
    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Name getUserName() {
        return userName;
    }

    public void setUserName(Name userName) {
        this.userName = userName;
    }
}

 

Name类源代码如下:

package hibernatetest;

public class Name {
private String firstName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    private String lastName;
}

 

user.hbm.xml配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hibernatetest">
    <class name="User" table="`user`">
        <id name="id">
            <generator class="hilo"/>
        </id>
        <component name="userName">
            <property name="firstName" column="first_name"></property>
            <property name="lastName" column="last_name"></property>
        </component>

        <property name="birthday"/>
    </class>
</hibernate-mapping>
不需要对name类单独的写映射文件,直接包含到了user映射文件中去。

对象中的属性比较复杂,可以将其独立出来处理。
1,可以用两张表来实现一对一的映射。
2,如果想把信息保存到同一张表中,则可以使用component。


当组件的属性不能和表中的字段简单对应的时候可以选择使用用户自定义类型org.hibernate.usertype.UserType或org.hibernate.usertype.CompositeUserType

分享到:
评论

相关推荐

    Hibernate中文学习资料

    本篇将主要围绕`Hibernate3中文参考手册`展开,深入探讨Hibernate的基础概念、配置、实体映射、查询语言以及其他关键特性。 1. **Hibernate概述** Hibernate是一个开源的ORM框架,它提供了对Java应用程序的数据库...

    hibernate教程-从入门到精通-第4篇(共四篇)共2

    【hibernate教程-从入门到精通-第4篇(共四篇)共2】这篇教程是关于Java持久层框架Hibernate的学习指南,旨在帮助初学者深入理解并掌握Hibernate的核心概念和技术。Hibernate作为一款强大的对象关系映射(ORM)工具,...

    Hibernate学习笔记(三)

    在本篇“Hibernate学习笔记(三)”中,我们将深入探讨Hibernate这一强大的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式处理数据库操作,极大地简化了Java应用程序与...

    最经典的hibernate教程_从入门到精通_第二篇

    本教程旨在提供一个全面的Hibernate学习路径,让你能够熟练地运用Hibernate进行数据库操作,提升开发效率。通过深入学习,你将掌握如何利用Hibernate进行对象关系映射(ORM),事务管理,查询优化以及与其他技术如...

    Hibernate之第1解之-hibernate_demo_1

    【标题】"Hibernate之第1解之-hibernate_demo_1" 涉及的主要内容是对Hibernate框架的基础理解和应用,这是Java开发中一个重要的持久化工具。这篇博客可能详细介绍了如何搭建Hibernate开发环境,以及进行初步的数据...

    hibernate实践

    这篇文档集合了丰富的Hibernate实践知识,对于初学者来说是一份宝贵的资源。 1. **Hibernate核心概念** Hibernate的核心在于持久化对象,它允许我们将Java类映射到数据库表,对象的属性对应于表的列。实体类是Java...

    hibernate 3,25

    在本篇文章中,我们将深入探讨Hibernate 3.2.5中的核心概念、特性以及它如何简化Java数据库编程。 1. **对象关系映射(ORM)**:Hibernate作为ORM工具,将Java对象与数据库表进行映射,使得开发者可以处理Java对象...

    hibernate测试

    这篇关于“hibernate测试”的文章旨在深入探讨Hibernate的核心概念,以及如何进行有效的测试以确保其在项目中的稳定运行。 1. **Hibernate简介** Hibernate是一个开源的Java库,它为Java应用程序提供了一个框架,...

    Hibernate学习笔记(很详细哦)

    ### Hibernate学习笔记精要 #### 一、HelloWorld与Hibernate入门 **HelloWorld**是学习任何新技术时的经典第一个程序,Hibernate也不例外。通过构建一个简单的Java项目`hibernate_0100_HelloWorld`,我们可以熟悉...

    hibernate立体结构文档

    本篇文章将基于“hibernate3.0立体文档”中的32个示例,深入探讨Hibernate的核心概念、工作原理以及常见用法。 一、Hibernate概述 Hibernate是Java开发中的一个持久化框架,它通过提供一种对象-关系映射机制,将...

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    第8篇为工具篇,内容包括在Java Web项目中常用的开源工具框架、主要有版本管理工具SVN、日志工具commons-logging与Log4J、报表图形引擎JFreeChart、PDF组件iText等;第9篇为实战篇,内容为两个典型的应用系统:论坛...

    hibernate源码release-4.1.4.Final版

    本篇文章将围绕Hibernate 4.1.4.Final版本的源码进行深入探讨,揭示其内部机制,帮助读者提升对Hibernate的理解和应用水平。 一、Hibernate概述 Hibernate是一个开源的ORM框架,它实现了Java持久化模型,将数据库...

    Hibernate4的一些总结

    【描述】:这篇博客主要涵盖了Hibernate4框架在实际开发中的应用和理解,作者通过个人实践对Hibernate4的核心特性和使用技巧进行了深度解析。 【标签】:“源码”和“工具”这两个标签揭示了本文将涉及到Hibernate4...

    hibernate经典技术PPT

    描述中的"经典heibernate教程,从入门到精通_CSTP-Hibernate02(第二篇,共四篇).ppt"提到了Hibernate教程的第二部分,说明这是一个系列教程,旨在帮助学习者从基础到高级逐步掌握Hibernate。"不错的东西 就是有点看不...

    hibernate知识点总结

    这篇文档将对Hibernate的关键概念、配置、实体类、映射文件、会话和事务等方面进行详尽的介绍,以帮助J2EE初学者快速理解和掌握Hibernate。 1. **对象关系映射(ORM)**: ORM是Hibernate的核心,它通过映射文件将...

    hibernate-orm-master.zip

    本篇将从源码的角度,对Hibernate进行深度解析,帮助读者理解其核心机制。 一、Hibernate概览 Hibernate是一个开源的、基于Java的持久化框架,它提供了一种在Java应用和关系数据库之间建立映射的方法,使得开发者...

    hibernate学习笔记

    这篇学习笔记将深入探讨Hibernate的基础和关键特性,包括其核心概念、配置、注解使用以及ORM的核心原理。 1. **Hibernate概述** Hibernate是一个开源的ORM框架,由Gavin King创建,它通过提供一个接口,让开发者...

Global site tag (gtag.js) - Google Analytics