Hibernate配置

       hibernate是java中常见的一种ORM解决方案,可以实现数据库类型无差别化,以对象方式快速访问数据,极大的提高开发效率。由于hibernate框架本身的配置选项和应用十分庞大复杂,因此这里只对hibernate的基本配置使用加以说明。

        首先当然是下载Hibernate框架。可以从官方站点上下载最新的版本,下载地址http://www.hibernate.org/downloads,本文配置基于hibernate3.0。需要引用的jar包主要包括:hibernate3.jar、antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、javassist-3.9.0.GA.jar、jta-1.1.jar、slf4j-api-1.5.8.jar,此外还有cglib-2.2.jar、c3p0-0.9.1.jar、ehcache-1.2.3.jar等一些可选的包。

       hibernate的一切对象都从Configuration对象开始构建,Configuration要求使用配置文件来初始化内部属性,所以启动hibernate的条件就是配置文件。配置文件只要符合hibernate规范即可,可以是任意名称放在任意位置,也可以以编程方式加载配置。但hibernate的缺省配置文件名称为hibernate.cfg.xml,缺省配置文件加载位置在classes目录下。对于web站点,配置加载路径就是在root/WEB-INF/classes/hibernate.cfg.xml。此外,配置文件也可以是properties格式。下面是一个xml格式的示例配置文件:

   1:  <?xml version='1.0' encoding='utf-8'?>
   2:  <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
   3:          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
   4:  <hibernate-configuration>
   5:      <session-factory>
   6:          <!--连接字符串-->
   7:          <property name="connection.url">jdbc:sqlserver://127.0.0.1;DatabaseName=mydb;SelectMethod=cursor</property>
   8:          <!--连接数据库的用户名-->
   9:          <property name="connection.username">sa</property>
  10:          <!--数据库用户密码-->
  11:          <property name="connection.password">sa</property>
  12:          <!--数据库驱动-->
  13:          <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
  14:          <!--选择使用的方言-->
  15:          <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
  16:          <!--显示执行的SQL语句-->
  17:          <property name="show_sql">true</property>     
  18:          <!--JDBC连接池(使用内置的连接池)-->
  19:          <property name="connection.pool_size">1</property>
  20:          <!--设置Hibernate自动管理上下文的策略-->
  21:          <property name="current_session_context_class">thread</property>
  22:          <!--在启动时删除并重新创建数据库-->
  23:          <property name="hbm2ddl.auto">update</property>
  24:          <mapping resource="hbm/TableX.hbm.xml"/>
  25:      </session-factory>
  26:  </hibernate-configuration>

         以上配置文件是使用SQLServer数据库的配置,除需要配置数据库链接以外,还需要配置数据库驱动和数据库方言。mapping映射文件存放在classes/hbm目录下。

        然后使用Eclipse的hibernate mapping file向导创建TableX.hbm.xml配置文件和对应的实体类com.test.entity.TableX,数据表中的大多数数据类型都是被hibernate支持的,但需要注意的是数据表必须存在主键,否则hibernate是无法工作的。

       当映射文件和实体类创建完成以后,就可以在类中使用hibernate来做数据查询了,示例查询代码如下:

   1:  package com.test.hibernate;
   2:   
   3:  import java.util.List;
   4:  import org.hibernate.Query;
   5:  import org.hibernate.Session;
   6:  import org.hibernate.SessionFactory;
   7:  import org.hibernate.cfg.Configuration;
   8:  import com.test.entity.TableX;
   9:   
  10:  public class HibernateSample {
  11:      public void doHibernateSample(){
  12:          Configuration cfg = new Configuration().configure();
  13:          SessionFactory sessionFactory = cfg.buildSessionFactory();
  14:          Session session = sessionFactory.openSession();
  15:          String hql = "from TableX where name= ?";
  16:          Query query = session.createQuery(hql);  
  17:          query.setParameter(0, "001");  //为参数赋值    
  18:          List<TableX> allX = (List<TableX>)query.list();//执行查询,返回对象集合
  19:          for(TableX x : allX){
  20:              x.getName();
  21:          }
  22:          //session.flush();
  23:          session.close();
  24:      }
  25:  }

        只需简单的配置就可以使用hibernate提供的强大功能,完全屏蔽底层数据库操作,以对象的方式存储和查询数据了。最后附带常用数据库的数据库驱动配置和数据库方言配置:

 
#SqlServer2000
jdbc.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc.dialect=org.hibernate.dialect.SQLServerDialect
 
#SqlServer2005
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.dialect=org.hibernate.dialect.SQLServerDialect
 
#Oracle
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.dialect=org.hibernate.dialect.Oracle10gDialect
 
#MySQL
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQL5Dialect
 
#HSQL
dbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.dialect=org.hibernate.dialect.HSQLDialect

 

原发布于Hibernate配置(2010-10-27 14:18),现转于此!

你可能感兴趣的:(Hibernate)