Hibernate 主配置文件

2017-04-25  本文已影响0人  Draper

maven 导入

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.2.Final</version>
        </dependency>

Hibernate 主配置文件

配置文件主要配置三方面的信息

对于<session-factory> 标签,可以包含多个 <property> 元素,用于配置 hibernate 与 DB 的连接信息及数据源信息;可以包含多个 <mapping> 元素,用于注册多个映射文件。

<session-factory>
DB 的连接信息
Hibernate 特性
注册映射文件
</session-factory>

数据库连接设置

在数据库连接四要素的 name 属性名称,cooection.* 与 hibernate.connection.* 的效果完全相同的,是为了兼容以前的版本
在数据库连接的 url 属性值的设置,一般写法是

jdbc:mysql://localhost:3306/database_name
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/hibernatelearning"/>
<property name="username" value="root"/>
<property name="password" value="root"/>

方言设置

方言的试着信息可以从 Hibernate 核心 jar 文件 hibernate-core-5.0.1.Final.jar 中的 org.hibernate.dialect 包中找到相应的类。赋值全类名即可为方言的值。

自动建表设置


数据库连接池配置

Hibernate 5 默认使用的是其自己开发的内置连接池。该连接池只是让调试代码时使用,在真正产品中不能使用。可以从控制台的 Hibernate 启动信息中查看到。

工业生产中,常用的数据源有 DBCP、C3P0 等。

注册映射文件

映射文件若存在多个,则可写多个<mapping>

映射文件详解

配置映射文件,即配置两个关系:

<hibernate-mapping> 标签

该标签是 Hibernate 映射文件的根元素,其下可以包含多个 <class>标签。常用的属性主要是 package 属性,用于指定其所包含的 <class> 类所在的包
例如

<hibernate-mapping>
    <class name="com.draper.domain.User" table="huser">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name"/>
    </class>
</hibernate-mapping>

<class>标签

该标签用于设置 PO 类与数据表之间的映射关系

<id><property>标签

他们都是 <class> 标签的子标签。用于指定 PO 类的 id 属性与表的主键之间的映射关系,他们的属性基本相同。常用的有:

Hibernate 类型是指 Hibernate 中定义的类型。

sql-type 属性:当然映射文件中最短类型还支持一种类型,即数据库中数据类型。但这种类型的使用,需要使用 <column> 元素,其中有一个 sql-type 属性用于指定字段类型。其值为所使用的 DBMS 的数据类型。


Hibernate 常用内置主键生成策略

increment 生成策略

该策略是 Hibernate 自己在维护主键的值。当准备在数据库表中插入一条新记录时,首先从数据库表中获取当前主键的最大值,然后在最大值基础上加 1,作为新插入记录的主键值,这就是 increament 生成策略。
勇气生成的主键字段所对应的属性类型可以是 long、short、int 及其封装类的类型。这种生成策略只有在没有其他进程向同一张表中插入数据时才能使用。在高并发下或集群下不能使用。

identiry 生成策略

该策略使用数据库自身的增长来维护主键值。如 mysql 使用 auto_increment 来维护。用其生成的逐渐字段所对应的属性类型可以使 long、short、int 及其封装类的类型。
该策略在生成主键值时会出现以下的情况:对于插入操作,即使最后的执行是回滚,DB 中记录主键值的变量也会增一因为其使用的是 MySQL 自身的 auto_increment 来为 id 赋值。

sequence 生成策略

在 Oracle、DB2 和 PostgreSQL 等数据库中创建一个序列(sequence),然后 Hibernate 通过该序列为当前记录获取主键值,从而为实体对象赋予主键字段映射属性值。此 sequence 生成策略,用其生成的主键字段映射属性的类型可以使 long、hort、int 及其封装的类的类型。

antive 生成策略

由 Hibernate 根据所使用的数据库支持能力从 identity、sequence 生成策略中选择一种。
使用这种表示服属性生成策略可以根据不同的数据库采用不同的生成策略,如 Oracle 中使用 sequence,在 MySQL 中使用 identity 便于 Hibernate 应用在不同的数据库之间移植。
测试情况是,没有生成任何与 id 生成有关的 SQL 语句。说明使用的是 identity 生成策略。

uuid 生成策略

uuid生成策略采用 UUID算法来生成一个字符串类型的主键值,该值使用 IP 地址、JVM 的启动时间(精确到 1/4秒)、系统时间和一个计数器值(在当前的 JVM中唯一)经过计算 产生,可以用于分布式的 Hibernate 应用中。产生的标识符属性是一个 32 位长度的字符串。 使用这种生成策略,要求属性的类型必须为 String类型。 这种标识符属性生成策略生成的数值可以保证多个数据库之间的唯一性,并且由于其 生成与具体的数据库没有关系,所以其移植性较强。但由于该值是 32 位长的字符串,所以 占用的数据库空间较大,并且检索速度较慢。不过,实际开发中使用这种生成策略较多。 除了使用 Hibernate 外,在 JDBC 中也可以使用 uuid 生成主键。因为 UUID 是 java.util 包中的一个独立的类。可以打开项目的 JRE System Library 库中的 rt.jar,在其中找到 java.util 包,即可看到 UUID这个类

所有生成策略如下显示

<class name="com.draper.domain.User" table="user">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name"/>
</class>
上一篇下一篇

猜你喜欢

热点阅读