Hibernate入门实例——动态组件(Dynamic components)

这篇博客介绍了Hibernate的动态组件特性,通过映射到Map对象来表示组件,从而实现更灵活的数据存储。文中以User类为例,展示了如何在User.hbm.xml映射文件中配置动态组件,并提供了测试用例,强调了这种映射方式在运行时动态检测和修改属性的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章讲了Hibernate中的组件,将一个类中的几个相关属性用组件来表示,组件需要定义一个单独的类,比如上一篇文章中的名称组件,需要映射到Name.java类。Hibernate中还提供了动态组件,将组件映射到一个Map对象,用Map对象来保存组件的相关属性。对应的配置文件标签为

我们将上一篇文章中的实例进行改写,用动态组件实现:

User类:

package com.metis.hibernate.domain;

import java.util.Map;

public class User2 {
	private String id;
	private Map name;
	private int age;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public Map getName() {
		return name;
	}
	public void setName(Map name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

 

User.hbm.xml映射文件:

  1.0"?>

  -//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

  

	<class name="com.metis.hibernate.domain.User2" table="USER">
		id" type="java.lang.String">
			ID" />
			class="native" />
		
		name">
			firstName" column="FIRST_NAME" type="java.lang.String" />
			middleName" column="MIDDLE_NAME" type="java.lang.String" />
			lastName" column="LAST_NAME" type="java.lang.String" />
		

		age" type="int">
			AGE" />
		
	class>

 

测试用例:

package com.metis.hibernate.test;

import java.util.HashMap;
import java.util.Map;

import org.hibernate.Session;

import com.metis.hibernate.domain.User2;
import com.metis.hibernate.util.HibernateUtil;

/**
 * 动态组件测试用例
 *
 */
public class TestDaynamicComponent {

	public static void main(String[] args) {

		Session session = HibernateUtil.openSession();
		session.beginTransaction();
		
		Map name = new HashMap();
		name.put("firstName", "");
		name.put("middleName", "");
		name.put("lastName", "");

		User2 user = new User2();
		user.setName(name);
		user.setAge(12);
		session.save(user);

		session.getTransaction().commit();
		HibernateUtil.closeSession();

	}

}

 

映射的语义上来讲,它和是相同的。 这种映射类型的优点在于通过修改映射文件,就可以具有在部署时检测真实属性的能力.利用一个DOM解析器,是有可能在运行时刻操作映射文件的。 更好的是,你可以通过Configuration对象来访问(或者修改)Hibernate的运行时元模型。

源代码下载:点击下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值