Hibernate5的映射文件浅析

Hibernate5的映射文件把一个PO对象与一个表映射起来。每一个表对应一个扩展名为hbm.xml的映射文件。
映射文件需要在hibernate.cfg.xml中注册(mapping),最好与功能相关对象类放在同一目录中,这样修改起来比较方便。
我来举一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 解析文件的DTD -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<!-- 映射文件的根目录 -->
	<hibernate-mapping>
		<!-- 配置持久化对象与数据库中表的对应关系使用class元素,其中name配置持久化对象对应的类
			table配置该持久化对象在数据库中对应的表名,catalog配置表对应的数据库名   -->
		<class name="PO.UserInfoPO" table="info" catalog="test">
			<id name="id" type="int">
				<column name="id"></column>
				<generator class="increment"></generator>
			</id>
			<property name="userName" type="string">
				<column name="userName" length="30" not-null="true"></column>
			</property>
			<property name="password" type="string">
				<column name="password" length="30" not-null="true"></column>
			</property>
		</class>
	</hibernate-mapping>

id——定义主键
该元素的常用属性如下所示:
(1)name:持久化类的标识符属性名字。
(2)type:标识持久化类的属性类型。
(3)column:数据库表的主键字段的名字。
(4)access:Hibernate5用来访问属性值的策略。

generator——设置主键生成方式
该元素的作用是指定主键的生成器,通过一个class属性指定生成器对应的类。
Hibernate5提供的内置生成器如下所示:
1)、increment(递增)
increment用于为long、short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用,在集群下不要使用。
2)、identity(标识)
identity为DB2、MySQL、MSSQL Server和Sybase等数据库的内置标识字段提供支持。返回的标识符是long、short或者int类型的。
3)、sequence(序列)
sequence为DB2、Oracle等数据库的内置序列(sequence)提供支持。返回的标识符是long、short或者int类型的。
4)、seqhilo(序列高/低位)
使用一个高/低位算法来高效的生成long、short或者int类型的标识符,需要指定一个数据库sequence的名字。
5)、uuid.hex
使用一个128位的UUID算法生成字符串类型的标识符,在同一网络中是唯一的。UUID被编码为一个32位十六进制的字符串,包含IP地址、JVM的启动时间、系统时间和一个计数器值。
6)、assigned
assigned可让应用系统在执行save()方法之前为对象分配一个标识符。如果需要为应用程序分配一个标识符,可以使用assigned生成器。
7)、foreign
它使用另一个相关对象的标识符,与one-to-one元素一起使用。

property——定义属性
property用于持久化对象的属性与数据库字段之间的映射,包含以下属性:
(1)name:持久化对象的属性名
(2)column:数据库表的字段名
(3)insert:表明用于insert的SQL语句中是否包含这个被映射的字段,默认为true。
(4)update:表明用于update的SQL语句中是否包含这个被映射的字段,默认为true。
(5)lazy:指定实例变量第一次被访问时,这个属性是否延迟抓取,默认为false。
(6)type:Hibernate映射类型的名字。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值