新手上路之Hibernate(二):基本映射以及一些原则与主键生成策略
一、什么是映射
在上一篇文章中 新手上路之Hibernate:第一个Hibernate例子,通过一个例子了解了什么是Hibernate。而其中最重要的就是通过User.hbm.xml来配置映射。这里所说的映射就是对象关系映射:将对象数据保存到数据库中,同时可以将数据库数据读入对象中,开发人员只对对象进行操作就可以完成对数据库数据的操作。
知道了什么是映射,那么我们先来看一下最基本的映射关系——基本映射,即根据表结构创建相应实体类
例如:还是以Mysql数据库为例,进行说明。有如下一张表:
建立相应的实体类:User
<hibernate-mapping><class name="com.example.hibernate.User" table="t_user"><id name="id"><generator class="uuid"/></id><property name="username"/></class></hibernate-mapping>
其他部分的代码参照上一篇文章即可。
对于第3条建议,如果使用了fianl关键字,那么延迟加载(load)将会无效。具体含义将会在下一篇文章中给出实例。
在上面User.hbm.xml配置文件中有一个标签:<generator>。它表示的是主键生成策略。主键生成策略必须配置,用来为该持久化类的实例生成唯一的标识。它有如下几种策略
uuid: 用一个128-bit的UUID算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了IP地址),UUID被编码为一个32位16进制数字的字符串,它的生成是由Hibernate生成,一般不会重复UUID包含:IP地址,JVM的启动时间,系统时间和一个计算器值。 identity:MySql数据库中自增长 Sequence:Oracle数据库自增长 native:根据底层数据库能力选择identity、sequence中的一个。 assigned:手动分配主键.<generator>没有指定时的默认生成策略 foreign:使用另外一个相关联的对象的标示符。通常和<one-to-one>配合使用五、总结概括一下Hibernate的基本映射就是:实体类——对应了——数据库中表、实体类中的属性——对应了——表中字段。- 10楼lbq613613昨天 20:44
- 貌似一种映射关系。
- 9楼xqf309昨天 20:43
- 从文章里读出来,映射是数据库字段和实体属性之间的对应
- 8楼mazhaojuan昨天 11:12
- 这理论用在教务系统,教务是不是会变得更强大了?
- 7楼wwwwenhuan昨天 09:43
- 基本映射其实就是实体映射,是和关联映射相对的
- 6楼lidaasky前天 21:27
- 受益匪浅
- 5楼lfmilaoshi前天 19:36
- 理论基础,能不能在实践中运用,想一想,你的教务系统。
- 4楼tang_huan_11前天 11:13
- 楼主,你的总结写得真够精辟!
- 3楼zs15932616453前天 08:03
- 楼主写的很详细,值得收藏!
- 2楼Jesse6213天前 21:15
- 主键生成的策略很重要,挑选合适的。
- 1楼a1314517love3天前 11:44
- 这种映射可以实现通过对象来操作数据库,OO思想的再次体现