hibernate映射配置文件分析(二)
来源:互联网 发布:c 手机软件编程 编辑:程序博客网 时间:2024/05/18 14:44
一、<class>标签
1.1 name
1.2 table
1.3 catalog
二、<id>标签
2.1 name
2.2 column
2.3、length属性
2.4、type属性
Type:通常用来指定hibernate映射数据类型,比如:integer,string,character,date,timestamp,float,object,blob等。它是java类属性的数据类型与数据库字段数据类型的桥梁,如果不进行类型设定,hibernate它会使用反射来得到这个名字的属性,以此来猜测正确的hibernate类型。开发中一般不写。
一般都不需要编写,如果写需要按着规则来编写
* 数据库字段的数据类型 <column name="name" sql-type="varchar"/>
* Java的数据类型 type="java.lang.String"
* Hibernate的数据类型 type="string"
2.5 主键生成策略
2.5.1 sequence
采用数据库提供的sequence机制生成主键,需要数据库支持sequence。如oralce、DB、SAP DB、PostgerSQL、McKoi中的sequence。MySQL这种不支持sequence的数据库则不行(可以使用identity)。
<generator class="sequence"> <param name="sequence">hibernate_id</param></generator>
<param name="sequence">hibernate_id</param> 指定sequence的名称Hibernate生成主键时,查找sequence并赋给主键值,主键值由数据库生成,Hibernate不负责维护,使用时必须先创建一个sequence,如果不指定sequence名称,则使用Hibernate默认的sequence,名称为hibernate_sequence,前提要在数据库中创建该sequence。
特点:只能在支持序列的数据库中使用,如Oracle。
2.5.2 identity
identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。<id name="id" column="id"> <generator class="identity" /></id>例:如果使用MySQL数据库,则主键字段必须设置成auto_increment。
id int(11) primary key auto_increment特点:只能用在支持自动增长的字段数据库中使用,如MySQL。
2.5.3 native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。<id name="id" column="id"> <generator class="native" /></id>例如MySQL使用identity,Oracle使用sequence
注意:如果Hibernate自动选择sequence或者hilo,则所有的表的主键都会从Hibernate默认的sequence或hilo表中取。并且,有的数据库对于默认情况主键生成测试的支持,效率并不是很高。
使用sequence或hilo时,可以加入参数,指定sequence名称或hi值表名称等,如
<param name="sequence">hibernate_id</param>特点:根据数据库自动选择,项目中如果用到多个数据库时,可以使用这种方式,使用时需要设置表的自增字段或建立序列,建立表等。
2.5.4 uuid
UUID:Universally Unique Identifier,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)
其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。
<id name="id" column="id"> <generator class="uuid" /></id>Hibernate在保存对象时,生成一个UUID字符串作为主键,保证了唯一性,但其并无任何业务逻辑意义,只能作为主键,唯一缺点长度较大,32位(Hibernate将UUID中间的“-”删除了)的字符串,占用存储空间大,但是有两个很重要的优点,Hibernate在维护主键时,不用去数据库查询,从而提高效率,而且它是跨数据库的,以后切换数据库极其方便。
特点:uuid长度大,占用空间大,跨数据库,不用访问数据库就生成主键值,所以效率高且能保证唯一性,移植非常方便,推荐使用。
1. increment:适用于short,int,long作为主键.不是使用的数据库自动增长机制.
* Hibernate中提供的一种增长机制.
* 先进行查询 :select max(id) from user;
* 再进行插入 :获得最大值+1作为新的记录的主键.
* 问题:不能在集群环境下或者有并发访问的情况下使用.
2. identity:适用于short,int,long作为主键。但是这个必须使用在有自动增长数据库中.采用的是数据库底层的自动增长机制.
* 底层使用的是数据库的自动增长(auto_increment).像Oracle数据库没有自动增长.
3. sequence:适用于short,int,long作为主键.底层使用的是序列的增长方式.
* Oracle数据库底层没有自动增长,想自动增长需要使用序列.
4. uuid:适用于char,varchar类型的作为主键.
* 使用随机的字符串作为主键.
5. native:本地策略.根据底层的数据库不同,自动选择适用于该种数据库的生成策略.(short,int,long)
* 如果底层使用的MySQL数据库:相当于identity.
* 如果底层使用Oracle数据库:相当于sequence.
6. assigned:主键的生成不用Hibernate管理了.必须手动设置主键.
- hibernate映射配置文件分析(二)
- Hibernate配置文件之映射文件配置(二)
- Hibernate映射(二)
- hibernate学习(二)主配置文件/映射配置/主键映射
- Hibernate(二)结构-配置文件-实体映射及配置文件
- Hibernate映射配置文件详解
- hibernate映射配置文件详解
- hibernate配置文件,映射文件
- Hibernate 关联映射配置文件
- hibernate的映射配置文件
- hibernate映射配置文件详解
- hibernate映射配置文件说明
- Hibernate 一对一映射(二)
- Hibernate映射关系(二)
- hibernate映射(二) 之Hibernate单项一对多映射
- MyBatis理论知识(二)XML 映射配置文件
- mybatis系列-XML 映射配置文件(二)
- hibernate配置文件映射元素详解
- (8)RxJava2+Retrofit2+OkHttp3系列(Retrofit2-1)
- SPFA算法 (基于Bellman-Ford算法)
- Android工具之把int类型整数毫秒值转换为时间分秒格式
- 【头条】西安全球程序员节:码动的是未来,舞动的是精神和人才
- 1 linux 安装
- hibernate映射配置文件分析(二)
- NVIDIA DLI 深度学习入门培训 | 来自南京晓庄学院现场报道
- Python三维绘图:马鞍面
- Android中的数据存储方式
- Mapreduce的工作原理
- 【sort函数】的基本使用方法
- 定语从句
- 没有找到libmysql.dll,因此这个应用程序未能启动
- Android调用js方法以及js调用Android方法