为了能在各种不同的工作环境下工作
具有大量的配置参数
所有属性的名字和语义都在 org.hibernate.cfg.Environment类中定义
Hibernate的JDBC属性
-weight:bold;c
属性名 | 用途
|
hibernate.connection.driver_class | jdbc驱动类
|
hibernate.connection.url | jdbc URL
|
hibernate.connection.username | 数据库用户 |
hibernate.connection.password | 数据库用户密码
|
hibernate.connection.pool_size | 自带连接池容量上限数目 |
Hibernate连接池 1:使用Hibernate自带的连接池(算法不成熟) 2:使用配置文件指定的数据库连接池。 3:从容器中获取得到连接池(如:Tomcat)
出于性能和稳定性考虑应该使用第三方的连接池 - C3P0 - Proxool
使用C3P0
tyle='font-fam
Hibernate.c3p0.min_size | 连接池中可用数据库连接的最小数目 |
Hibernate.c3p0.max_size | 连接池中所有数据库连接的最大数目 |
Hibernate.c3p0.time_out | 数据库连接的超时时间 |
Hibernate.c3p0.max_statement | 可以被缓存的PreparedStatement的最大数目 |
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.timeout">120</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">120</property> <property name="hibernate.c3p0.acquire_increment">2</property>
连接池属性
使用proxool - 导入proxool-0.9.0RC3.jar包 - 创建proxool.xml文件和 hibernate.cfg.xml放在一起
<?xml version="1.0" encoding="utf-8"?>
<something-else-entirely>
<proxool>
<alias>xml-test</alias>
<driver-url>jdbc:mysql://localhost:3306/telecom</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value=""/>
<property name="useUnicode" value="true"/>
<property name="characterEncoding" value="utf-8"/>
<property name="zeroDateTimeBehavior" value="convertToNull"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
在hibernate.cfg.xml中作配置
<property name=“proxool.pool_alias”>xml-test</property> <!--这个名字要和XML文件中的别名要对应--> <property name=“proxool.xml”>Proxool.xml</property> <!--这个是建立的XML文件的名字--> <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
从容器中获取得到连接池
在容器中配置数据源
在hibernate.cfg.xml中指定使用这个名为“jdbc/feifei”的JNDI <property name=”hibernate.connection.datasource”>java:/comp/env/jdbc/test </property>
从容器中获取得到连接池
在容器中配置数据源
在hibernate.cfg.xml中指定使用这个名为“jdbc/feifei”的JNDI <property name=”hibernate.connection.datasource”>java:/comp/env/jdbc/test </property>
Hibernate可选配置属性
tyle='font-fam
属性名 | 用途 |
hibernate.show_sql | 输出所有SQL语句到控制台. |
hibernate.format_sql | 格式化输出SQL语句 |
hibernate.generate_statistics | Hibernate将收集有助于性能调节的统计数据 |
hibernate.use_sql_comments | 在SQL中生成有助于调试的注释 |
…… |
一个普通PO对象的映射文件组成部分(User.hbm.xml)
Class节点配置说明
dth=104>
参数 | 说明 | 类型 | 必须 |
name | 类名 | text | 是 |
table | 类对应的表名 ,默认值:当前类名 | text | 否 |
dynamic-update | 生成Update SQL时,仅包含发生变 动的字段, 默认值: false | Bool | 否 |
dynamic-insert | 生成Insert SQL时,仅包含发生变 动的字段, 默认值: false | Bool | 否 |
discriminator-value | 子类辨别标识,用于多态支持。 | text | 否 |
where | 数据筛选选条件,如果只需要处理库表中某些特定数据的时候,可通过此选项设定结果集限定条件。 | text | 否 |
mutable | 类是否会发生改变 |
h:64pt' width=
参数 | 说明 | 类型 | 必须 |
name | 映射类中对应表主键的属性名 | Text | N |
column | 主键字段名 , 默认值:当前类名 | Text | N |
type | 字段类型 | Text | N |
length | 字段长度 | Text | N |
unsaved-value | 用于对象是否已经保存的判定值。 | Text | N |
access | 类属性访问方式 | Text |
generator class节点配置说明
参数 | 说明 | 类型 | 必须 |
assigned | 主键由外部程序负责生成,无需 Hibernate参与。 | —
| —
|
hilo | 通过 hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 | —
| —
|
increment | 主键按数值顺序递增。 | — | — |
identity | 采用数据库提供的主键生成机制。 如 DB2、SQL Server、MySQL 中的主键生成机制。 | — | — |
sequence | 采用数据库提供的 sequence 机制生成主键。如Oralce。 | — | — |
uuid.hex | 由Hibernate基于 128 位唯一值产生算法生成 16 进制数值(编码后以长度32的字符串表示) 作为主键。 | — | — |
native | 由hibernate根据,Dialect, |
属性/字段映射配置说明
参数 | 说明 | 类型 | 必须 |
name | 映射类属性名 | Text | Y |
column | 对应数据库表字段 | Text | N |
type | 字段类型 | Text | N |
length | 字段长度 | Text | N |
update | Update时,是否包含此字段 | Bool | N |
insert | Insert时,是否包含此字段 | Bool | N |
not-null | 字段是否允许为空 | Bool | N |
formula | 表达式属性 | Text | N |
lazy | 延迟加载属性 | Bool | N |
unique | 字段是否唯一(是否允许重复值) | Bool |
内置映射类型
lob
Hibernate映射类型 | 说明 | SQL类型 | 大小 |
integer/int | java.lang.Integer/int | INTEGER | 4 |
long | java.lang.Long/long | BIGINT | 8 |
big_decimal | java.math.BigDecimal | NUMERIC | N |
string | java.lang.String | VARCHAR | 变长 |
boolean | java.lang.Boolean/Boolean | BIT | 布尔 |
date | java.util.Date/java.sql.Date | DATE | 日期 |
timestamp | java.util.Date/java.util.Timestamp | TIMESTAMP |
|
clob | java.sql.Clob | CLOB | CLOB |
blob | java.sql.Blob | BLOB | b |