在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是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接使用注解来定义对象关系映射信息,替代了传统的Hibernate XML配置文件。这种注解方式提高了开发效率,减少了配置文件的维护...
现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....
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. 乐观...
此版本标志着Hibernate框架中的一个特定阶段,特别是关于如何利用注解(Annotations)来简化Java对象与数据库表之间的映射。 #### Hibernate Annotations 简介 Hibernate 是一款非常流行的 Java 持久化框架,它通过...
Hibernate Annotations 是 Hibernate 的一个重要组成部分,它引入了注解(Annotation)机制,使得开发者无需编写 XML 配置文件,就可以实现对象和数据库表之间的映射。 ### Hibernate ORM 基础 1. **对象关系映射...
1. **注解(Annotations)**:注解是Java语言提供的一种元数据机制,用于在代码中嵌入信息,这些信息可以被编译器或JVM在编译时或运行时处理。在Hibernate中,注解用来描述对象如何映射到数据库表,如@Entity、@...
在这个“hibernate 和hibernate_annotations(中文API)帮助文档”中,我们将深入探讨Hibernate的核心概念、特性以及如何使用Hibernate Annotations进行对象的持久化。 一、Hibernate核心概念 1. 实体(Entity):在...
webwork2.1.7 中文开发文档 Hibernate Annotations参考文档-3.20中文开发文档 Hibernate_3.2.0_Reference_zh_CN中文开发文档
其中,Hibernate Annotations是其核心组件之一,它通过在Java实体类上添加注解,实现了数据持久化的声明式配置。本篇将深入探讨Hibernate Annotations 3.4.0.GA版本中的关键特性、工作原理以及实际应用。 1. **...
《Hibernate Annotations 3.4.0.GA API详解》 Hibernate是Java开发中广泛使用的对象关系映射...深入理解Hibernate Annotations,不仅可以提高开发效率,还能帮助我们更好地管理和维护数据库与Java对象之间的映射关系。
而`hibernate-annotations.jar`是Hibernate框架中的一个重要组件,主要负责处理对象的注解配置,使得开发者能够以更简洁的方式定义数据模型与数据库之间的映射关系。 **一、Hibernate ORM框架** Hibernate ORM是...
Hibernate Annotations是Hibernate框架的一个扩展,它允许开发者使用Java语言的注解(Annotations)来定义对象与数据库表之间的映射关系,替代传统的Hibernate XML配置文件。这使得代码更加简洁,更易于维护,并且与...
使用注解Annotation时用的jar包。 包括: hibernate-commons-annotations-3.3.0.ga.jar hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar
Hibernate Annotations 是 Hibernate 的一个重要组成部分,它引入了元数据注解,使得在 Java 类中直接声明数据库映射成为可能,从而简化了对象持久化的过程。 在 Hibernate Annotations 中,我们主要会涉及到以下几...
通过阅读《Hibernate Annotations 中文文档》,开发者不仅可以掌握如何使用注解进行对象关系映射,还能了解到Hibernate如何优化数据库交互,以及如何处理复杂的数据结构和业务逻辑。这对于提高开发效率和代码质量...
5. **高级映射特性**:Hibernate Annotations还支持一些高级映射特性,如继承映射、组件映射和懒加载等。例如,@Inheritance注解用于指定实体类的继承策略,@Embedded和@Embeddable注解用于实现组件映射。 6. **...
在Hibernate中,Hibernate Annotations是一个重要的组成部分,它引入了JPA(Java Persistence API)的注解,使得对象-关系映射更加简洁且无需XML配置。 **一、Hibernate Annotations简介** Hibernate Annotations是...
Hibernate-annotations-3.4.0.GA是Hibernate的一个重要分支,它引入了注解功能,使得开发者无需编写XML配置文件,就能完成对象与数据库表的映射。这一改进不仅降低了项目的复杂性,也提高了开发效率,尤其在处理大型...