Hibernate中的映射

概念:

   Hibernate映射主要是通过对象关系映射文件实现,将对数据库的操作直接转换为对实体对象的操作 ,实现了真正的面向对象编程。

 

目的:
   使用映射的目的除了实现面向对象操作同时还提高了效率。
   其实建立实体对象间的关联关系就相当于在多个表间建立约束(只是从表转换到了对象上)。

 

分类:

1.基本映射
   正确理解各个配置选项的含义是掌握映射文件的关键。
   映射文件可以对面向对象中的关联关系、继承关系和组合关系等各种关系进行配置,下面我们来看一下基本的映射标签:

 

<?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属性指定持久化类(或者接口)的Java全限定名;
		table属性指定要映射的对应的数据库表名(不使用则默认为类名user)		
	 -->
	<class name="com.dan.hibernate.User" table="t_user">
		<!-- 
			持久化类对象的对象标识符(OID)和表的主键的映射关联:
			name属性指定类中作为OID的属性名;
			column属性表中主键字段的名字;
			type属性指定Hibernate的映射类型			
		 -->
		<id name="id">
			<!-- 指定对象标识符生成器:class属性指定生成器的类别名 -->
			<generator class="uuid" />
		</id>
		
		<!-- 
			普通属性的映射:
			name属性:属性的名字,以小写字母开头;
			column属性:对应的数据库字段名(不写则默认为name的名字)
			type属性:指定Hibernate的映射类型(不写则默认为实体类属性的类型)
		-->		
		<property name="name" />
		<property name="password" />
		<property name="createTime" />
		<property name="expireTime" />
	</class>
</hibernate-mapping>


 

2.关联映射
   对于关联映射最主要的就是先弄清楚两者之间的关系(几对几),然后再确定由谁来维护关系(一般是多的一端维护关系)。
   通过两者间的关系可以分为以下几类(具体用法先不在这里进行阐述了):
      多对一关联映射(多的一端维护关系)
      一对一关联映射
         一对一主键关联映射
         一对一唯一外键关联映射
      一对多关联映射(多的一端维护关系)
   多对多关联映射(需要建立中间表)


3.继承映射
   每棵类继承树一张表:一棵类树(多个类,有一个根类)只有一张表。
   每个类一张表:有多少个类就有多少个表。
   每个具体类一张表:有多少个叶子类就有多少个表。


4.复合主键映射
   通常做法是将主键相关字段放到一个单独的类中,这个类是有要求的:
     1.必须实现序列号Serializable接口
     2.覆盖equals和hashcode方法

5.集合映射:
   Set、List、Array、Map、Bag集合的映射分别使用<set>标签,<list>标签,<array>标签,<map>标签,<bag>标签表示。

 

6.组件映射:
   Compontent是一个值类,从属于实体类,它与实体类的主要差别在于,它没有oid;
   采用Compontent的好处:实现对象模型的细粒度划分,复用率高,含义明确,层次分明。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值