`

[Hibernate Annotations] 嵌入组件(Component)映射

阅读更多
在hibernate3.2之前的版本,是用配置文件来进行类与数据库映射,

在3.2之后,可以用JPA来映射,


我们在使用配置文件的时候,有一个重要的标签是Component,用来使用面向数据库和面向对象之间的转换

在面向数据库时候,我们要在一个表中放入尽可能多的字段,来减少表间的连接

在面向对象的时候,我们要将每一个类原子化,以求可以做到类的复用

面向数据库和面向对象之间的鸿沟,我们可以用Component来解决一部份


但是在作用JPA来配置的时候,并没有@javax.persistence.Component标签

那这个时候可以使用怎么来完成呢




我们可以看这个网址的文章 : http://www.blogjava.net/zJun/archive/2007/03/07/102428.html
这篇文章是这么写的 :


组件(Component)类必须在类一级定义 @Embeddable 注解.

在特定的实体的关联属性上使 @Embedded 和 @AttributeOverride 注解可以覆盖该属性对应的嵌入式对象的字段映射:


@Entity
public   class  Person  implements  Serializable {

//  Persistent component using defaults 
Address homeAddress;

@Embedded
@AttributeOverrides( {
@AttributeOverride(name = " iso2 " , column  =  @Column(name = " bornIso2 " ) ),
@AttributeOverride(name = " name " , column  =  @Column(name = " bornCountryName " ) )
} )
Country bornIn;

} 
@Embeddable
public   class  Address  implements  Serializable {
String city;
Country nationality;  // no overriding here 
} 
@Embeddable
public   class  Country  implements  Serializable {
private  String iso2;
@Column(name = " countryName " )  private  String name;

public  String getIso2() {  return  iso2; }
public   void  setIso2(String iso2) {  this .iso2  =  iso2; }

public  String getName() {  return  name; }
public   void  setName(String name) {  this .name  =  name; }

}


说明:

1. Person 有两个组件属性,分别是 homeAddress 和 bornIn . homeAddress 属性并没有注解. 但是Hibernate自动检测其对应的Address类中的 @Embeddable 注解, 并将其看作一个持久化组件.

2.对于Country中已映射的属性,则使用 @Embedded 和 @AttributeOverride 注解来覆盖原来的字段映射值。

3. Address 对象中还内嵌了 Country 对象, Hibernate通过在表达式中使用"."支持覆盖多层嵌套(即嵌入式对象中还包括其他嵌入式对象)的字段映射.如下:


@Embedded
@AttributeOverrides( {
@AttributeOverride(name = " city " , column  =  @Column(name = " fld_city " ) )
@AttributeOverride(name = " nationality.iso2 " , column  =  @Column(name = " nat_Iso2 " ) ),
@AttributeOverride(name = " nationality.name " , column  =  @Column(name = " nat_CountryName " ) )
// nationality columns in homeAddress are overridden 
} )
Address homeAddress; 


从这篇文章我们可以看出用JPA来如何来映射Component
在Embeddable的类中,不一定要写@Column
在Entity中的Embedded属性,不写AttributeOverrides就使用Embeddable类中默认的
如果自己写,那么@AttributeOverride中, name就是Embeddable类中的属性名, Column是数据库字段名
分享到:
评论

相关推荐

    hibernate-annotations-3.4.0.GA

    Hibernate Annotations是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接使用注解来定义对象关系映射信息,替代了传统的Hibernate XML配置文件。这种注解方式提高了开发效率,减少了配置文件的维护...

    hibernate annotations3.4.0 GA.rar

    现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....

    Hibernate Annotations 中文文档

    Hibernate Annotations API 中文文档 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观...

    HibernateAnnotations 中文版

    Hibernate Annotations 是 Hibernate 的一个重要组成部分,它引入了注解(Annotation)机制,使得开发者无需编写 XML 配置文件,就可以实现对象和数据库表之间的映射。 ### Hibernate ORM 基础 1. **对象关系映射...

    hibernate annotations

    1. **注解(Annotations)**:注解是Java语言提供的一种元数据机制,用于在代码中嵌入信息,这些信息可以被编译器或JVM在编译时或运行时处理。在Hibernate中,注解用来描述对象如何映射到数据库表,如@Entity、@...

    hibernate annotations 中文参考手册

    hibernate annotations 中文参考手册

    hibernate 和hibernate_annotations(中文API).pdf帮助文档

    在这个“hibernate 和hibernate_annotations(中文API)帮助文档”中,我们将深入探讨Hibernate的核心概念、特性以及如何使用Hibernate Annotations进行对象的持久化。 一、Hibernate核心概念 1. 实体(Entity):在...

    webwork hibernate annotations 三合一中文开发文档

    webwork2.1.7 中文开发文档 Hibernate Annotations参考文档-3.20中文开发文档 Hibernate_3.2.0_Reference_zh_CN中文开发文档

    hibernate-annotations

    其中,Hibernate Annotations是其核心组件之一,它通过在Java实体类上添加注解,实现了数据持久化的声明式配置。本篇将深入探讨Hibernate Annotations 3.4.0.GA版本中的关键特性、工作原理以及实际应用。 1. **...

    hibernate annotations 3.4.0.GA API

    《Hibernate Annotations 3.4.0.GA API详解》 Hibernate是Java开发中广泛使用的对象关系映射...深入理解Hibernate Annotations,不仅可以提高开发效率,还能帮助我们更好地管理和维护数据库与Java对象之间的映射关系。

    hibernate-annotations.jar

    而`hibernate-annotations.jar`是Hibernate框架中的一个重要组件,主要负责处理对象的注解配置,使得开发者能够以更简洁的方式定义数据模型与数据库之间的映射关系。 **一、Hibernate ORM框架** Hibernate ORM是...

    hibernate-annotations-3.4.0(参考文档,doc/../index.html)

    Hibernate Annotations是Hibernate框架的一个扩展,它允许开发者使用Java语言的注解(Annotations)来定义对象与数据库表之间的映射关系,替代传统的Hibernate XML配置文件。这使得代码更加简洁,更易于维护,并且与...

    Hibernate Annotations Reference 中文参考手册HTML版

    Hibernate Annotations 是 Hibernate 的一个重要组成部分,它引入了元数据注解,使得在 Java 类中直接声明数据库映射成为可能,从而简化了对象持久化的过程。 在 Hibernate Annotations 中,我们主要会涉及到以下几...

    hibernate annotations 中文文档

    通过阅读《Hibernate Annotations 中文文档》,开发者不仅可以掌握如何使用注解进行对象关系映射,还能了解到Hibernate如何优化数据库交互,以及如何处理复杂的数据结构和业务逻辑。这对于提高开发效率和代码质量...

    hibernate-annotations 相关jar包

    在Hibernate中,Hibernate Annotations是一个重要的组成部分,它引入了JPA(Java Persistence API)的注解,使得对象-关系映射更加简洁且无需XML配置。 **一、Hibernate Annotations简介** Hibernate Annotations是...

    Hibernate-annotations-3.4最新版本

    Hibernate-annotations-3.4.0.GA是Hibernate的一个重要分支,它引入了注解功能,使得开发者无需编写XML配置文件,就能完成对象与数据库表的映射。这一改进不仅降低了项目的复杂性,也提高了开发效率,尤其在处理大型...

    hibernate_-annotations_中文帮助文档

    《Hibernate Annotations 中文帮助文档》提供了关于如何在Java应用程序中使用Hibernate ORM框架进行数据库映射的详细指南。Hibernate Annotations是Hibernate框架的一部分,它允许开发者使用Java注解来定义对象关系...

    hibernate-annotations-3.4.0.GA+hibernate-distribution-3.3.2.GA-dist

    而Hibernate Annotations则是Hibernate框架的重要组成部分,它使得我们可以在实体类上直接使用注解进行对象关系映射,避免了XML配置文件的繁琐。本文将深入探讨Hibernate 3.3.2和Hibernate Annotations 3.4.0的核心...

    hibernate-annotations-3.4.0.jar

    而`hibernate-annotations-3.4.0.jar`是Hibernate框架中的一个关键组件,它主要负责提供对象-关系映射的注解支持,使得开发者能够以更加面向对象的方式来处理数据库操作。 Hibernate Annotations是Hibernate框架的...

Global site tag (gtag.js) - Google Analytics