hibernate.hbm.xml映射文件详解

hibernate.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" >

<!-- 配置表与实体对象的关系 -->
   <!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简写类名了. -->

<hibernate-mapping package="cn.itcast.domain">

<!-- 
		class元素: 配置实体与表的对应关系的
			name: 完整类名
			table:数据库表名
	 -->

	<class name="Customer" table="cst_customer" lazy="true" >
	
	<!-- id元素:配置主键映射的属性
				name: 填写主键对应属性名
				column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
				type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
						每个类型有三种填法: java类型|hibernate类型|数据库类型
				not-null(可选):配置该属性(列)是否不能为空. 默认值:false
				length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
		 -->
	
		<id name="cust_id" column="cust_id">
			<!-- generator:主键生成策略,就是每条记录录入时,主键的生成规则.(7个)
					identity:主键自增,由数据库来维护主键值,录入时不需要指定主键
					sequence:Oracle中的主键生成策略.
					increment(了解):主键自增,由hibernate来维护,每次插入前先查询表中id最大值,+1作为新主键值
					hilo:高低位算法.主键自增,由hibernate来维护,开发时不使用.
					native:hilo+sequence+identity 自动三选一策略.
					uuid:产生随机字符串作为主键.
					assigned:自然主键生成策略.hibernate不会管理主键值,由开发人员自行维护.
			
			 -->
			<generator class="native"></generator>
		</id>
		
		<!-- property元素:除id之外的普通属性映射
				name: 填写属性名
				column(可选): 填写列名
				type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
						每个类型有三种填法: java类型|hibernate类型|数据库类型
				not-null(可选):配置该属性(列)是否不能为空. 默认值:false
				length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
		 -->
		
		<property name="cust_name" column="cust_name">
			<!--  <column name="cust_name" sql-type="varchar" ></column> -->
		</property>
		<property name="cust_source" column="cust_source"></property>
		<property name="cust_industry" column="cust_industry"></property>
		<property name="cust_level" column="cust_level"></property>
		<property name="cust_linkman" column="cust_linkman"></property>
		<property name="cust_phone" column="cust_phone"></property>
		<property name="cust_mobile" column="cust_mobile"></property>
		
		<!-- 集合,一对多关系,在配置文件中配置 -->
		<!-- 
			name属性:集合属性名
			column属性:外键列名
			class属性:与我关联的对象完整类名
		 -->
		 <!-- 
		 	级联操作:cascade
		 		save-update:级联保存更新
		 		delete:级联删除
		 		all:save-update+delete
		 	级联操作:简化操作.目的少写两行代码.
		  -->
		  <!-- inverse属性:配置关系是否维护 
		  		true:customer不维护关系
		  		false:customer维护关系
		  		inverse属性:性能优化,提高关系维护的性能
		  		原则:无论怎么放弃,总有一方必须要维护关系.
		  		一对多关系中:一的一方放弃,也只能一的一方放弃,多的一方不能放弃
		  -->
		  <!-- 
		  		lazy属性:决定是否延迟加载
		  			true(默认值):延迟加载
		  			false:立即加载
		  			extra:极其懒惰
		  		fetch属性:决定加载策略,使用什么类型的sql语句加载集合数据
		  			select(默认值):单表查询加载
		  			join:使用多表查询加载集合
		  			subselect:使用子查询加载集合
		   -->
		   <!-- batch-size:抓取集合的数量为3.
		   		抓取客户的集合时,一次抓取几个客户的联系人集合
		    -->
		<set name="linkMen">
			<key column="lkm_cust_id"></key>
			<one-to-many class="LinkMan"/>
		</set>
	</class>
</hibernate-mapping>

<?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" >

<!-- 配置表与实体对象的关系 -->
   <!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简写类名了. -->

<hibernate-mapping package="cn.itcast.domain">

<!-- 
		class元素: 配置实体与表的对应关系的
			name: 完整类名
			table:数据库表名
	 -->

	<class name="LinkMan" table="cst_linkman">
	
	<!-- id元素:配置主键映射的属性
				name: 填写主键对应属性名
				column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
				type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
						每个类型有三种填法: java类型|hibernate类型|数据库类型
				not-null(可选):配置该属性(列)是否不能为空. 默认值:false
				length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
		 -->
	
		<id name="lkm_id">
			<!-- generator:主键生成策略,就是每条记录录入时,主键的生成规则.(7个)
					identity:主键自增,由数据库来维护主键值,录入时不需要指定主键
					sequence:Oracle中的主键生成策略.
					increment(了解):主键自增,由hibernate来维护,每次插入前先查询表中id最大值,+1作为新主键值
					hilo:高低位算法.主键自增,由hibernate来维护,开发时不使用.
					native:hilo+sequence+identity 自动三选一策略.
					uuid:产生随机字符串作为主键.
					assigned:自然主键生成策略.hibernate不会管理主键值,由开发人员自行维护.
			
			 -->
			<generator class="native"></generator>
		</id>
		
		<!-- property元素:除id之外的普通属性映射
				name: 填写属性名
				column(可选): 填写列名
				type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
						每个类型有三种填法: java类型|hibernate类型|数据库类型
				not-null(可选):配置该属性(列)是否不能为空. 默认值:false
				length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
		 -->
		
		<property name="lkm_gender">
			<!--  <column name="cust_name" sql-type="varchar" ></column> -->
		</property>
		<property name="lkm_name"></property>
		<property name="lkm_phone"></property>
		<property name="lkm_mobile"></property>
		<property name="lkm_email"></property>
		<property name="lkm_qq"></property>
		<property name="lkm_position"></property>
		<property name="lkm_memo"></property>
		
		<!-- 多对一 -->
		<!-- 
			name属性:引用属性名
			column属性:外键列名
			class属性:与我关联的对象完整类名
		 -->
		  <!-- 
		 	级联操作:cascade
		 		save-update:级联保存更新
		 		delete:级联删除
		 		all:save-update+delete
		 	级联操作:简化操作.目的少写两行代码.
		  -->
		  <!-- 多的一方:不能放弃维护关系的,外键字段就在多的一方. -->
		  <!-- 
		  		lazy属性:决定是否延迟加载
		  			proxy(默认值):由customer的类级别加载策略决定.
		  			false:立即加载
		  		fetch属性:决定加载策略,使用什么类型的sql语句加载集合数据
		  			select(默认值):单表查询加载
		  			join:使用多表查询加载集合
		   -->
		<many-to-one name="customer" column="lkm_cust_id" class="Customer"></many-to-one>
		
	</class>
</hibernate-mapping>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值