为了能在各种不同的工作环境下工作
具有大量的配置参数
所有属性的名字和语义都在 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 |