实体映射策略

本文介绍了两种实体粒度设计方法:面向设计的粒度细分,通过组件方式实现逻辑组成;面向性能的粒度细分,利用Hibernate特性提高系统性能。通过示例展示了如何拆分实体以优化大字段的处理。

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

实体粒度设计:

一、面向设计的粒度细分:主要是以一种组件(Component)的方式实现;组件即从属于某个整体的一个组成部分。Component没有标识,它作为一个逻辑组成,完全从属于实体对象。在hibernate的hbm.xml配置文件中中可以通过component节点结组件时行声明。如下图所示:

 

以达到细分TUser中的两个逻辑组成部分

二、面向性能的粒度细分:针对业务逻辑,通过合理的细粒度对象,提高系统的能耗比;在此最好的一个例子就是数据库中存大字段clob、blob字段带来的性能问题。解决这道可以利用hibernate3中提供了属性延迟加载功能在调用取数据时才真正从数据库中读取数据。至于hibernate2中则可以采用继承上的粒度划分来解决.如下例子:将原来的TUser对象拆分为TUserInfo和TUserProfile.

public class TUserInfo implements Serializable{

private Integer id;

private String name;

private Integer age;

......getter/setter.....

}

public class Tu TUserInfo implements Serializable{

private Blob image;

private Clob resume;

...getter/setter....

}

这样一来,我们对于无需操作resume/image数据的应用逻辑而言,我们可以通过TUserInfo对数据进行加载,而对于需要处理resume/image类型的,可以通过TUserProfile进行处理.

对于TUserInfo.hbm.xml配置文件要写三个属性即可,而对于继承它的TUserProfile实例类配置文件TUserProfile.hbm.xml则要写父类的三个属性和本身的两个属性,总共五个属性,最重要的是在这个配置文件中必须加上一个声明为显式多态关系。声明为显式多态的类:

<hibernate-mapping>

<class name="***.TUserProfile" table="T_USER"

polymorphism="explicit">

.....

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值