hibernate Component 映射(逻辑组):如果一张表的列太多了,那我们应该怎么做呢?可能有些人的做法就是:将一张一有拆分成两张表,那除了将表进行拆分,我们还能怎么样呢?在 Hibernate对这种表的列太多,进行拆分,有一种非常好的解决方案,那就是基于Component技术,使用Component技术,我们可以将一种表,按照字段的类型进行分类,同一类的,可以使用一个对象进行封装,而这个封装的对象,就是一个Component。假如,一个用户他的信息可能包含以下几种分类,住址(包括家庭地址、办公地址、家庭邮编、办公邮编等)、电话(家庭电话、办公电话、手机、小灵通)、邮件地址(办公邮箱、私人邮箱等)、通信工具(QQ号码、MSN、雅虎帐号、网易泡泡等),对于这些属性类别,我们都可以使用对象进行封装。
component映射
在hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid,
component可以成为是值对象(DDD)
采用component映射的好处:它实现了对象模型的细粒度划分,层次会更分明,复用率会更高
1、实体
public class User {
private int id;
private String name;
private Contact contact;
。。。
2、映射文件
<hibernate-mapping>
<class name="com.bjsxt.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<component name="contact">
<property name="email"/>
<property name="address"/>
<property name="zipCode"/>
<property name="contactTel"/>
</component>
</class>
</hibernate-mapping>
3、TestCase
public class ComponentMappingTest extends TestCase {
public void testSave1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
User user = new User();
user.setName("张三");
Contact contact = new Contact();
contact.setAddress("xxxxx");
contact.setEmail("xxx@rrr.com");
contact.setZipCode("1111111");
contact.setContactTel("9999999999");
user.setContact(contact);
session.save(user);
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
}
分享到:
相关推荐
这种映射方式有助于保持数据模型的整洁和逻辑性,同时也使得数据的管理更为高效。下面我们将详细探讨Hibernate的组件映射。 一、组件映射的概念 在Hibernate中,组件(Component)是一种特殊的关联关系,它将一个类...
"Hibernate组件映射代码详解" titre的知识点: * Hibernate组件映射代码的概念和实现 * 组件关联映射的属性和特点 * Hibernate组件映射的优点和应用场景 描述的知识点: * Hibernate组件映射代码的详细解释 *...
《Hibernate各类映射文件与配置文件模板》是一个包含多种Hibernate映射和配置示例的压缩包,用于帮助开发者理解和使用Hibernate框架。Hibernate是Java领域的一个流行的对象关系映射(ORM)框架,它允许开发者用面向...
组件映射是Hibernate中的一种高级映射策略,用于将一个类的属性组织成一个逻辑组件,这个组件可以有自己的持久化属性。 首先,我们需要理解什么是组件(Component)。在Hibernate中,组件通常是一个没有独立生命...
【Hibernate继承映射】是Java开发中使用Hibernate框架进行数据持久化时的一种重要技术,它允许我们将复杂的对象模型映射到数据库的表结构上。在实际项目中,我们经常遇到对象之间的继承关系,如抽象类和子类。...
在Java持久化领域,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它允许开发者将数据库操作转换为面向对象的代码。在这个场景中,我们关注的是Hibernate如何处理复杂的对象关系映射,特别是涉及Employer...
在Java开发领域,组件映射(Component Mapping)是对象关系映射(ORM)框架,如Hibernate,中的一个重要概念。它允许我们将一个实体类拆分成多个逻辑相关的部分,这些部分可以被视为独立的组件,每个组件有自己的...
`hibernate_component_mapping`文件可能讨论了Hibernate的组件映射。组件是一组相关的属性,它们可以作为一个整体被映射到数据库的一个或多个字段上。组件映射提供了一种有效的方式,将复杂对象分解为更小的部分,...
Component映射允许将复杂类型嵌入到实体中,例如`User`类包含一个`Contact`对象,`Contact`有自己的属性如`email`、`address`和`zipCode`。在Hibernate映射中,可以使用`<component>`标签来定义。 此外,还涉及到...
其中,`Hibernate`是JEECG的一个重要组成部分,它是Java领域中广泛使用的对象关系映射(ORM)框架,使得开发者可以通过面向对象的方式来操作数据库,而无需关心底层SQL的编写。 **1. Hibernate基础** Hibernate允许...
4. 编写Controller:实现请求处理逻辑,使用@RequestMapping注解定义URL映射。 接下来,Spring框架是整个应用程序的基石,它通过DI管理对象的生命周期和依赖关系。Spring还提供了AOP来处理横切关注点,如日志、事务...
而Hibernate则是一个ORM(对象关系映射)框架,它简化了数据库操作,使开发者可以专注于业务代码而不是SQL。 **Spring框架** Spring是Java企业版(Java EE)开发中的关键组件,它的核心特性包括依赖注入(DI)和...
Hibernate支持三种持久化模型:实体(Entity)、值对象(Value Object)和组件(Component)。实体是与数据库表对应的Java对象;值对象用于封装业务逻辑中的数据;组件则用来表示一个对象的组成部分。 5. **级联...
Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互;而定时器则用于在特定时间执行特定任务,常见的如数据清理、统计分析等。下面将详细介绍这三个组件以及如何将它们结合在一起进行...
Spring 作为一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等核心功能,而 Hibernate 则是一个强大的对象关系映射(ORM)框架,它简化了数据库操作。下面将详细介绍如何...
### Hibernate 参考文档知识点概览 #### 一、前言 ...#### 七、组件(Component)映射 - **依赖对象**:描述组件对象如何作为整体的一部分进行映射。 - **在集合中使用组件**:在集合中嵌入组件对象的映射方式。
9. **Component映射**:Component用于将多个属性组合成一个复杂的对象,可以映射到表的单个行或多个列,它不是独立存在的,而是依附于其他实体。 10. **集合映射**:包括Set、List、Map的映射,用于处理一对多、多...
8. **配置注解驱动**:在`dispatcher-servlet.xml`中启用Spring MVC的注解驱动,配置`<context:component-scan>`扫描带有注解的bean,并设置`<mvc:annotation-driven>`以支持HTTP方法映射和数据绑定。 9. **测试与...
#### 设计细颗粒度的持久类并使用`<component>`实现映射 在Hibernate中,细颗粒度的持久类是指将实体中的复杂属性拆分成单独的对象进行管理。例如,对于一个用户实体中的地址信息,可以将其设计为一个独立的`...