10 14Hibernate之实体粒度划分

文章目录1 实体粒度划分的意义2 基于`*.hbm.xml`文件实现细粒度划分3 基于Annotation的配置1 实体粒度划分的意义在整个Hibernate技术应用之中,基本的流程:要提供有一个POJO类,而后要提供有一个POJO.hbm.xml文件,但是如果说现在假设有如下一种情况出现。范例:定义数据库脚本-- 删除数据表DROP TABLE IF EXISTS 'member';-- 创建数据表CREATE TABLE 'member'( mid VARCHAR(50), mname
摘要由CSDN通过智能技术生成

1 实体粒度划分的意义

在整个Hibernate技术应用之中,基本的流程:要提供有一个POJO类,而后要提供有一个POJO.hbm.xml文件,但是如果说现在假设有如下一种情况出现。
范例:定义数据库脚本

-- 删除数据表
DROP TABLE IF EXISTS 'member';
-- 创建数据表
CREATE TABLE 'member'(
	mid VARCHAR(50),
	mname VARCHAR(50),
	mage INT,
	mbirthday DATE,
	maddress VARCHAR(100),
	mzipcode VARCHAR(8),
	mphone VARCHAR(50),
	CONSTRAINT pk_nid PRIMARY KEY(nid)
);

如果按照正常的思路,那么此时生成的POJO类的结构如下。
范例:生成的POJO类的结构

public class Member implements java.io.Serializable {
   

	// Fields

	private String mid;
	private String mname;
	private Integer mage;
	private Date mbirthday;
	private String maddress;
	private String mzipcode;
	private String mphone;
}

有人现在会提出这样的问题,以上的设计方式不适合于面向对象的应用形式。从面向对象的角度来看以上的Member的组成应该分为:Member、MemberBasic、MemberContact。而每个类的作用如下:
(1)MemberBasic:

package org.lks.pojo;

import java.util.Date;

@SuppressWarnings("serial")
public class MemberBasic implements java.io.Serializable {
   
	private String mname;
	private Integer mage;
	private Date mbirthday;
}

(2)MemberContract:

package org.lks.pojo;

@SuppressWarnings("serial")
public class MemberContact implements java.io.Serializable {
   
	private String maddress;
	private String mzipcode;
	private String mphone;
}

(3)Member:

package org.lks.pojo;

@SuppressWarnings("serial")
public class Member implements java.io.Serializable {
   
	private String mid;
	private MemberBasic basic = new MemberBasic();
	private MemberContact contact = new MemberContact();
}

此时的结构非常符合于面向对象的设计思想,这种的设计方式应该算是合成设计模式。

2 基于*.hbm.xml文件实现细粒度划分

虽然现在只有一张member表,但是却发现有三个实体类,并且这些实体类之间是存有引用关系的,而要想使用Hibernate开发,就必须将这些关系再配置文件中进行展示。

所以现在的重点就在配置文件的编写上。
范例:在Member.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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
	<!-- 不管如何操作,每一个*.hbm.xml文件只会与一个POJO类关联 -->
    <class name="org.lks.pojo.Member" table="member" catalog="hedb">
        <id name="mid" type="java.lang.String">
            <column name="mid" length="50" />
            <generator class="as
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值