新手上路之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的基本映射就是:实体类——对应了——数据库中表、实体类中的属性——对应了——表中字段。