`
penghao122
  • 浏览: 363037 次
  • 性别: Icon_minigender_1
  • 来自: 广东珠海
社区版块
存档分类
最新评论

hibernate 全面学习【hibernate 复合主键映射】

阅读更多
复合主键映射

通常将复合主键相关属性,单独抽取出来,建立一个独立的类
  * 必须实现序列化接口
  * 必须实现equals和hashcode方法
 
  采用<composite-id>标签进行映射,其它属性采用<property>正常映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.bjsxt.hibernate.FiscalYearPeriod" table="t_fiscal_year_period">
		<composite-id name="fiscalYearPeriodPK">
			<key-property name="fiscalYear" column="fiscal_year"/>
			<key-property name="fiscalPeriod" column="fiscal_period"/>
		</composite-id>
		<property name="beginDate" column="begin_date"/>
		<property name="endDate" column="end_date"/>
		<property name="periodSts" column="period_sts"/>
	</class>
</hibernate-mapping>	



测试
package com.bjsxt.hibernate;

import java.util.Date;

import org.hibernate.Session;

import junit.framework.TestCase;

public class FiscalYearPeriodTest extends TestCase {
	
	public void testSave() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			//复合主键
			FiscalYearPeriodPK fiscalYearPeriodPK = new FiscalYearPeriodPK();
			fiscalYearPeriodPK.setFiscalYear(2007);
			fiscalYearPeriodPK.setFiscalPeriod(8);
			
			FiscalYearPeriod fiscalYearPeriod = new FiscalYearPeriod();
			
			//和主键建立关联
			fiscalYearPeriod.setFiscalYearPeriodPK(fiscalYearPeriodPK);
			fiscalYearPeriod.setBeginDate(new Date());
			fiscalYearPeriod.setEndDate(new Date());
			fiscalYearPeriod.setPeriodSts("Y");
			
			session.save(fiscalYearPeriod);
			session.getTransaction().commit();	
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}
	
	public void testLoad1() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			//复合主键
			FiscalYearPeriodPK fiscalYearPeriodPK = new FiscalYearPeriodPK();
			fiscalYearPeriodPK.setFiscalYear(2007);
			fiscalYearPeriodPK.setFiscalPeriod(8);
			FiscalYearPeriod fiscalYearPeriod = (FiscalYearPeriod)session.load(FiscalYearPeriod.class, fiscalYearPeriodPK);
			System.out.println("beginDate=" + fiscalYearPeriod.getBeginDate());
			System.out.println("endDate=" + fiscalYearPeriod.getEndDate());
			System.out.println("periodSts=" + fiscalYearPeriod.getPeriodSts());
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}

}
分享到:
评论

相关推荐

    hibernate 无主键表映射

    通过以上的解释,我们可以看到,虽然无主键表在数据库中并不常见,但在某些特定场景下,如复合主键,Hibernate提供了一套完整的解决方案。所提供的资源包括一个简单的Demo,可以实际运行并理解无主键表映射的实现...

    hibernate复合主键映射

    本篇文章将深入探讨Hibernate如何处理复合主键映射,并通过实例进行解析。 复合主键在数据库设计中是常见的,例如,考虑一个订单明细表,其中订单号(order_id)和商品编号(product_id)结合在一起可以唯一识别一...

    hibernate复合主键配置和使用

    《Hibernate复合主键配置与使用详解》 在Java开发中,Hibernate作为一款强大的ORM框架,大大简化了数据库操作。然而,当我们面临复杂的数据表结构,尤其是涉及到复合主键时,如何在Hibernate中进行配置和使用就显得...

    hibernate复合主键设置

    在Hibernate的映射文件(XML方式)或者使用JPA注解(Java方式)中,需要为复合主键提供相应的配置。对于XML配置,你可能会看到类似以下的设置: ```xml &lt;hibernate-mapping&gt; &lt;!-- 其他属性的映射 --&gt; ...

    hibernate复合主键的实例

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 ...

    Hibernate复合主键.

    本篇文章将深入探讨Hibernate如何支持和管理复合主键。 一、理解复合主键 在数据库设计中,复合主键是一种特殊情况,当单个字段不能唯一标识表中的每一行时,可以使用两个或多个字段的组合来创建唯一的标识。例如...

    hibernate3 注释生成复合主键或者嵌入式主键的方法及实例.doc

    通过这种方式,Hibernate将知道如何处理`UserRole`类,将其映射到具有复合主键的数据库表。 3. 嵌入式主键(Embedded Id): 如果希望将主键字段作为实体类的一部分,而不是单独的类,可以使用`@EmbeddedId`和`@...

    Hibernate中对数据库复合主键的支持.pdf

    ### Hibernate中对数据库复合主键的支持 #### 一、引言 在软件开发过程中,特别是在J2EE领域中,Hibernate作为一种流行的ORM(Object-Relational Mapping)框架被广泛使用。ORM框架的主要作用是将关系型数据库中的...

    Java的Hibernate框架中复合主键映射的创建和使用教程

    在Java的Hibernate框架中,复合主键映射是一种处理多列组合成主键的情况,它使得在数据库表中由两个或更多个字段组成的主键能够被正确地映射到实体类。在使用复合主键时,我们需要遵循一定的步骤和规则。 首先,...

    Hibernate复合主键

    ### Hibernate复合主键详解 在关系型数据库设计中,经常会出现使用多个字段组合起来作为主键的情况,这种类型的主键被称为复合主键。而在Java领域,尤其是使用Hibernate框架进行持久化操作时,复合主键的应用变得尤...

    生成hibernate映射文件工具

    6. `&lt;join&gt;`:用于处理复合主键或者跨表的复杂映射。 生成工具的工作原理大致如下: 1. 连接数据库:工具会首先连接到指定的数据库,获取数据库的元数据信息,如表名、列名、约束等。 2. 分析表结构:根据数据库中...

    hibernate集合的映射

    在Hibernate中,Map通常对应于数据库的复合主键或者关联表。配置示例: ```xml ``` 这里的`&lt;map&gt;`元素定义了一个名为`preferences`的Map集合,`&lt;key&gt;`元素对应外键,`&lt;map-key&gt;`元素指定Map的键列和类型,...

    Hibernate学习笔记

    Hibernate的映射标签和属性是其核心功能之一,其中&lt;hibernate-mapping&gt;标签用于定义映射文件的根元素,标签用于定义持久化类的映射,标签用于定义类的主键映射,标签用于定义类的属性映射。通过这些标签,可以创建...

    Hibernate学习.pdf

    - **COMPOSITE-ID**: 复合主键。 - **PROPERTY**: 映射到数据库表的字段。 #### 6. 关联关系映射 - **单向关联(UNIDIRECTIONAL ASSOCIATIONS)**: - **多对一(many-to-one)**: 实体间的多对一关系。 - **一对一...

    《精通Hibernate》学习-对象关系映射基础.zip

    Hibernate支持这种复合主键的映射。 12. 查询缓存和二级缓存:为了提高性能,Hibernate提供了缓存机制。查询缓存存储查询结果,避免重复执行相同的查询;二级缓存则可以缓存整个实体,减少对数据库的访问。 13. ...

    Hibernate_关联关系映射配置

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。本教程将详细讲解Hibernate中的关联关系映射配置,帮助你理解和掌握如何...

    Hibernate_学习总结

    间接映射则是定义一个复合主键类,通过该类实例作为主键进行映射。 #### 四、Hibernate映射类型 Hibernate提供了一种机制,用于在Java类型与SQL类型之间建立映射,这种机制通过`type`属性在配置文件中设定。映射...

Global site tag (gtag.js) - Google Analytics