`

Hibernate学习之----------组件映射

阅读更多

 

在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-release-5.2.10

    Hibernate是Java平台上的一款开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的...

    hibernate-release-4.1.4

    此版本包含了Hibernate的核心库和其他相关组件,使得开发者能够将Java类与数据库表进行映射,进而实现数据的持久化。 【描述】中的"hibernate的jar包"指的是Hibernate框架的运行库文件,这些JAR文件包含了Hibernate...

    hibernate-release-5.0.7.Final的所有jar包

    `hibernate-release-5.0.7.Final`这个版本的jar包列表可能包括以下核心组件: 1. **hibernate-core**: 这是Hibernate的核心模块,提供了基本的ORM功能,如实体管理、会话管理、查询服务等。它包含了对JPA(Java ...

    hibernate-release-5.2.10.Final

    Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,一直以来都是开发人员的重要工具。5.2.10.Final是Hibernate的一个稳定版本,它在前一版本的基础上进行了诸多改进和优化,为开发者提供了更高效、更...

    hibernate-cglib-repack-2.1_3.jar

    在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而CGLIB则是一个代码生成库,它允许开发者在运行时动态创建子类,这对于面向切面编程(AOP)和扩展已有类的功能至关重要...

    最新 hibernate-release-4.2.13.Final.tgz

    Hibernate,作为Java领域最著名的对象关系映射(ORM)框架之一,极大地简化了数据库操作,使得开发者能够用面向对象的方式来处理数据。本资源包“hibernate-release-4.2.13.Final.tgz”提供了一个完整的Hibernate ...

    hibernate-release-4.3.1.Final.zip

    Hibernate是Java开发中广泛使用的对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而简化了数据持久化的复杂性。这个版本可能是Hibernate的稳定版本,标记为"Final"意味着它经过充分测试,...

    hibernate-common-annotations.jar

    "hibernate-common-annotations.jar"是Hibernate框架中的一个关键组件,它提供了对JPA(Java Persistence API)注解的支持,使得开发者能够更加便捷地进行对象持久化操作。本文将深入探讨这个jar文件及其在Hibernate...

    hibernate-release-4.2.4核心jar包

    首先,`hibernate-core-4.2.4.Final.jar`是Hibernate的核心组件,它包含了ORM的主要功能,如实体管理、持久化操作、查询语言(HQL)解析等。这个jar包是使用Hibernate进行开发时必不可少的部分,它定义了Hibernate API...

    hibernate-release-4.2.4.Final.zip

    【描述】"这个压缩文件包含的是Hibernate框架4.2.4.Final版本的相关组件,是开发人员在使用Hibernate进行Java应用程序开发时的重要资源。Hibernate是一个开源的对象关系映射(ORM)框架,它简化了数据库操作,使得...

    hibernate-release-5.0.7 全包

    Hibernate,作为Java领域中备受推崇的对象关系映射(ORM)框架,极大地简化了数据库操作。本次我们将详细探讨hibernate-release-5.0.7全包的内容及其在实际开发中的应用。 该压缩包包含了Hibernate 5.0.7版本的核心...

    hibernate-distribution-3.3.2.GA-dist

    首先,"hibernate-distribution-3.3.2.GA-dist" 是Hibernate 3.3.2.GA版本的完整发布包,它包含了该版本的所有必需组件。这个压缩包中不仅有运行时所需的jar文件,还包含了详细的API文档——javadoc,这对于开发者...

    hibernate-release-5.3.2.Final

    Hibernate ORM,作为Java领域最著名的对象关系映射框架之一,自诞生以来就深受开发者喜爱。2018年7月5日,Hibernate发布了其最新版本——5.3.2.Final,带来了诸多改进和新特性,为开发者提供了更为高效、稳定的持久...

    hibernate-release-4.3.10.Final.zip

    Hibernate,作为Java领域最著名的对象关系映射(ORM)框架之一,自诞生以来就深受开发者喜爱。本次我们聚焦于`hibernate-release-4.3.10.Final`版本,这是一个稳定且功能丰富的版本,为开发者提供了强大的数据持久化...

    hibernate-distribution-3.6.0

    这个“hibernate-distribution-3.6.0.Beta3”压缩包包含了Hibernate框架的所有组件和必要的文档,包括API文档、示例代码和配置文件,为开发者提供了完整的开发环境。尽管随着时间的推移,新的版本不断推出,但...

    hibernate-orm-3.3源码

    《深入剖析Hibernate ORM 3.3源码》 Hibernate,作为一个强大的对象关系映射(ORM)框架,一直以来...对于任何想提升数据库操作效率和代码可维护性的 Java 开发者来说,研究 Hibernate 源码都是极其有价值的学习过程。

    hibernate-release-5.2.2.Final

    5. **dom4j.jar**:这是一个XML处理库,Hibernate利用它来解析和生成XML配置文件,如Hibernate的映射文件(hbm.xml)。 6. **jandex.jar**:这是Jandex反编译器,用于扫描和索引类元数据,提升Hibernate的元数据...

    hibernate-annotation-helloword

    这不仅展示了Hibernate的强大之处,也是学习ORM和数据库操作的一个良好起点。 总结来说,**hibernate-annotation-helloworld**项目是一个基础的教程,帮助开发者快速理解并开始使用Hibernate的注解方式来处理数据库...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    Hibernate作为JPA的实现之一,其JPA 2.1 API实现了规范中的所有接口和类,提供了高效且灵活的数据持久化解决方案。在"hibernate-jpa-2.1-api-1.0.0.final-sources.jar"中,我们可以看到这些API的源代码,包括Entity ...

    hibernate-distribution-3.6.6.Final.tar.gz

    1. **Hibernate库文件**:这些`.jar`文件是Hibernate的核心组件,如`hibernate3.jar`,包含了Hibernate的主API和实现,还有其他依赖的库,如`ejb3-persistence.jar`用于EJB3规范的支持,`cglib-nodep.jar`用于类代理...

Global site tag (gtag.js) - Google Analytics