Hibernate配置文件
Hibernate框架简介
Hibernate框架是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的对象编程思维来操纵数据库。
1.Hibernate的配置文件
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库URL -->
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:orcl
</property>
<!-- 数据库用户 -->
<property name="connection.username">scott</property>
<!-- 数据库用户密码 -->
<property name="connection.password">orcl</property>
<!-- 数据库JDBC驱动 -->
<property name="connection.driver_class">
oracle.jdbc.OracleDriver
</property>
<!-- 指定当前session范围和上下文 -->
<property name="current_session_context_class">thread</property>
<!-- oracle版本方言 -->
<property name="dialect">
org.hibernate.dialect.Oracle10gDialect
</property>
<!-- 是否将运行期生成的SQL输出到日志已供调试 -->
<property name="show_sql">true</property>
<!-- 是否格式化 -->
<property name="format_sql">true</property>
<!-- 映射文件 -->
<mapping resource="cn/bdqn/entity/Dept.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
2.Hibernate配置文件参数作用
(1)connection.url:表示数据库URL。Jdbc:oracle:thin:@10.0.0.176:1521:orcl.是Oracle数据库的URL,其中jdbc.oracl.thin:@是固定写法,10.0.0.176是IP地址,1521是端口号,orcl是数据库实例名。
(2)Connection.username:表示数据库用户名。
(3)Connection.password:表示数据库用户密码。
(4)Connection.driver_class:表示数据库驱动。Oracle:jdbc.driver.OracleDriver是Oracle是数据库的驱动类。
(5)Dialect:用于配置Hibernate使用的数据类型。Hibernate支持几乎所有的主题数据库,包括Oracle、DB2、MS SQL Server和MySQL等。Org.hibernate.dialect.Oracle10gDialect指定当前数据库类型是oracle 10g及以上版本。
(6)Curr_sql:如果设置为true,则程序运行时在控制台输出SQL语句。
(7)Format_sql:如果设置为true,则程序运行时在控制台输出格式化后的SQL语句。
3.Hibernate映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Hibernate映射文件 -->
<hibernate-mapping>
<class name="cn.bdqn.entity.Dept" table="`DEPT`">
<id name="deptNo" column="`DEPTNO`" type="java.lang.Byte">
<generator class="assigned"></generator>
</id>
<property name="deptName" column="`DNAME`" type="java.lang.String"></property>
<property name="location" column="`LOC`" type="java.lang.String"></property>
</class>
</hibernate-mapping>
4.Hibernate映射文件参数
Dept.hb.xml定义了Dept类到数据库表DEPT的映射。其中各元素的含义如下。
class:表示持久化类的数据库表名。
table:表示持久化类的全限定名。
id:表示持久化类的OID和表的主键的映射。常用属性如下:
type:表示持久化类属性的名称,和属性的访问器相匹配。
column:表示持久化类属性对应的数据库表字段的名称,也可在子元素column中指定。
generator:id元素的子元素,用于指定主键的生成策略。常用属性及元素如下:
class:属性用来指定具体主键生成策略。
param:元素用来传递参数。
常用的主键生成策略如下:
(1).assigned:主键由应用程序负责生成,无须Hibernate参与。这是没有指定元素时的默认生成策略。
(2).increment:对类型为long,short,或int的主键,已自动增长的方式生成主键的值。主键按数值顺序递增,增量为1.
(3).identity:对如SQL Server、DB2、MySQL等支持标识列的数据库,可使用该主键生成策略生成自动增长主键,但要在数据库中将相应的主键字段设置为标识列。
(4).sequence:对如Oracle、DB2等支持序列的数据库,可使用该主键生成策略生成自动增长主键,通过子元素param可传入数据库中序列的名称。
(5).native:由Hibernate根据底层数据库自行判断采用何种主键生成策略,即由使用的数据库生成主键的值。
propert:定义持久化类中的属性和数据库表中的字段的对应关系。常用属性如下:
name:表示持久化类属性的名称,和属性的访问器相匹配。
type:表示持久化类属性的类型。
column:表示持久化类属性对应的数据库表字段的名称,也可以子元素column中指定。
column元素:用于指定其父元素代表的持久化类属性所对应的数据库中的字段。其常用属性如下:
name:表示字段的名称;
length:表示字段长度;
not-null:设定是否不能为null,设置为true表示不能为null;
5. Hibernate的优点
(1)对象/关系数据库映射(ORM) 它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想
(2)透明持久化(persistent) 带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。
(3)事务Transaction(org.hibernate.Transaction) 应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。 (4) 它没有侵入性,即所谓的轻量级框架 (5) 移植性会很好 (6) 缓存机制,提供一级缓存和二级缓存 (7) 简洁的HQL编程
6.Hibernate的缺点
(1)不适合以中心大量使用储存过程的应用
(2)大规模的批量插入,修改和删除不合适的Hibernate。