在Hibernate组件映射学习时,我们首先要了解什么是组件,组件其实就是一个类中包含另一个类的情况,换句话说就是类的组合。
Hibernate中组件就是类的组合,但组合后如何映射到数据库了,怎样产生数据库表的结构呢?
不过怎样实现组件映射有两种方式:
1.注解
如果采用注解,应该是比较简单的,与联合组件类似;
etg:假设Huasband包含Wife对象(夏娃不是从亚当哪里来的吗?),其实现就是在复合类的组件get方法上申明@Embedded,如下
package suse.ly.domain; /** * 妻子类 * @author ly-suse * */ public class Wife { private String wifename; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getWifename() { return wifename; } public void setWifename(String wifename) { this.wifename = wifename; } }
丈夫类:
package suse.ly.domain; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * 丈夫类 * @author ly-suse * */ @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } @Column(nullable=false) public String getName() { return name; } @Embedded //使用Embedded申明为Huasband的组件, //作为表的一部分而不是单独一张表,因为Wife类没有声明@Entity public Wife getWife() { return wife; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setWife(Wife wife) { this.wife = wife; } }
测试结果程序:
new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
运行结果:
drop table if exists Husband
create table Husband (id integer not null auto_increment, name varchar(255) not null, age integer not null, wifename varchar(255), primary key (id))
表明创建表husband并将wife属性作为本表字段生成创建数据库的语句。
2.xml配置
XML配置个人觉得有得复杂,主要是写的太多了:
去掉刚才的所有注解,新建Husband.hbm.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="suse.ly.domain.Husband" > <id> <generator class="native"></generator> </id> <property name="name"></property> <!--使用component 声明为该类的组件对象 ,还要是让组件里面配置上它的属性--> <component name="wife"> <property name="wifename"></property> <property name="age"></property> </component> </class> </hibernate-mapping>
运行测试结果如同注解方式,需要声明的是我的Wife类按理应该实现java.io.Serializable接口,并重写hashcode和equals方法,但由于本例中没有涉及具体对象保存等操作,没有写上啊,望谅解!
相关推荐
Hibernate是Java平台上的一款开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的...
此版本包含了Hibernate的核心库和其他相关组件,使得开发者能够将Java类与数据库表进行映射,进而实现数据的持久化。 【描述】中的"hibernate的jar包"指的是Hibernate框架的运行库文件,这些JAR文件包含了Hibernate...
`hibernate-release-5.0.7.Final`这个版本的jar包列表可能包括以下核心组件: 1. **hibernate-core**: 这是Hibernate的核心模块,提供了基本的ORM功能,如实体管理、会话管理、查询服务等。它包含了对JPA(Java ...
Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,一直以来都是开发人员的重要工具。5.2.10.Final是Hibernate的一个稳定版本,它在前一版本的基础上进行了诸多改进和优化,为开发者提供了更高效、更...
在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而CGLIB则是一个代码生成库,它允许开发者在运行时动态创建子类,这对于面向切面编程(AOP)和扩展已有类的功能至关重要...
Hibernate,作为Java领域最著名的对象关系映射(ORM)框架之一,极大地简化了数据库操作,使得开发者能够用面向对象的方式来处理数据。本资源包“hibernate-release-4.2.13.Final.tgz”提供了一个完整的Hibernate ...
Hibernate是Java开发中广泛使用的对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而简化了数据持久化的复杂性。这个版本可能是Hibernate的稳定版本,标记为"Final"意味着它经过充分测试,...
"hibernate-common-annotations.jar"是Hibernate框架中的一个关键组件,它提供了对JPA(Java Persistence API)注解的支持,使得开发者能够更加便捷地进行对象持久化操作。本文将深入探讨这个jar文件及其在Hibernate...
首先,`hibernate-core-4.2.4.Final.jar`是Hibernate的核心组件,它包含了ORM的主要功能,如实体管理、持久化操作、查询语言(HQL)解析等。这个jar包是使用Hibernate进行开发时必不可少的部分,它定义了Hibernate API...
【描述】"这个压缩文件包含的是Hibernate框架4.2.4.Final版本的相关组件,是开发人员在使用Hibernate进行Java应用程序开发时的重要资源。Hibernate是一个开源的对象关系映射(ORM)框架,它简化了数据库操作,使得...
Hibernate,作为Java领域中备受推崇的对象关系映射(ORM)框架,极大地简化了数据库操作。本次我们将详细探讨hibernate-release-5.0.7全包的内容及其在实际开发中的应用。 该压缩包包含了Hibernate 5.0.7版本的核心...
首先,"hibernate-distribution-3.3.2.GA-dist" 是Hibernate 3.3.2.GA版本的完整发布包,它包含了该版本的所有必需组件。这个压缩包中不仅有运行时所需的jar文件,还包含了详细的API文档——javadoc,这对于开发者...
Hibernate ORM,作为Java领域最著名的对象关系映射框架之一,自诞生以来就深受开发者喜爱。2018年7月5日,Hibernate发布了其最新版本——5.3.2.Final,带来了诸多改进和新特性,为开发者提供了更为高效、稳定的持久...
Hibernate,作为Java领域最著名的对象关系映射(ORM)框架之一,自诞生以来就深受开发者喜爱。本次我们聚焦于`hibernate-release-4.3.10.Final`版本,这是一个稳定且功能丰富的版本,为开发者提供了强大的数据持久化...
这个“hibernate-distribution-3.6.0.Beta3”压缩包包含了Hibernate框架的所有组件和必要的文档,包括API文档、示例代码和配置文件,为开发者提供了完整的开发环境。尽管随着时间的推移,新的版本不断推出,但...
《深入剖析Hibernate ORM 3.3源码》 Hibernate,作为一个强大的对象关系映射(ORM)框架,一直以来...对于任何想提升数据库操作效率和代码可维护性的 Java 开发者来说,研究 Hibernate 源码都是极其有价值的学习过程。
5. **dom4j.jar**:这是一个XML处理库,Hibernate利用它来解析和生成XML配置文件,如Hibernate的映射文件(hbm.xml)。 6. **jandex.jar**:这是Jandex反编译器,用于扫描和索引类元数据,提升Hibernate的元数据...
这不仅展示了Hibernate的强大之处,也是学习ORM和数据库操作的一个良好起点。 总结来说,**hibernate-annotation-helloworld**项目是一个基础的教程,帮助开发者快速理解并开始使用Hibernate的注解方式来处理数据库...
Hibernate作为JPA的实现之一,其JPA 2.1 API实现了规范中的所有接口和类,提供了高效且灵活的数据持久化解决方案。在"hibernate-jpa-2.1-api-1.0.0.final-sources.jar"中,我们可以看到这些API的源代码,包括Entity ...
1. **Hibernate库文件**:这些`.jar`文件是Hibernate的核心组件,如`hibernate3.jar`,包含了Hibernate的主API和实现,还有其他依赖的库,如`ejb3-persistence.jar`用于EJB3规范的支持,`cglib-nodep.jar`用于类代理...