使用Hibernate前的准备工作:
1.创建项目并导入jar包:
下载Hibernate:可以在http://sourceforge.net/projects/hibernate/files/hibernate4/页面找到下载链接,在页面下方选择要下载的版本,我们需要下载的是Hibernate-release-4.2.0.Final.zip。
解压后,展开“lib”目录——展开“required”目录,这里面的jar包,需要导入到工程中。
导入数据库的JDBC驱动包,本书采用oracle10g作为数据库,使用ojdbc14.jar(也可以使用Oracle11g的驱动包ojdbc6.jar,该包支持JDK6.0)。
如Hibernate官方文档所说,Hibernate的连接池不能应用于产品环境(可用于开发和测试环境),建议我们使用第三方的更为优秀的连接池。我们采用c3p0最新版本c3p0-0.9.2.1.jar和mchange-commons-Java-0.2.3.4.jar。
考虑到JSP中要使用JSTL,所以jstl.jar和standard.jar也是需要的。
2.创建Hibernate配置文件
- 用于配置数据库连接
- 运行时所需的各种属性
-
默认文件名为“hibernate.cfg.xml”
hibernate.cfg.xml文件主要包括四项内容:
1、 数据库连接信息:驱动程序类名、URL、用户名、密码。
2、 Hibernate相关特性:dialect(方言)、show_SQL(输出SQL语句到控制台)、format_SQL(格式化SQL语句)。
3、 连接池相关信息。
4、 实体类映射文件:实体类与数据库表之间的逻辑映射。
文件的代码示例如下:
<?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:XE</property>
<!-- 数据库用户名 -->
<property name="connection.username">oa</property>
<!-- 数据库密码 -->
<property name="connection.password">oa123</property>
<!-- 数据库JDBC驱动类名 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 数据库方言 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- ddl语句自动建表 -->
<property name="hbm2ddl.auto">none</property>
<!-- 是否输出Hibernate生成的SQL语句,开发阶段一般需要开启 -->
<property name="show_SQL">true</property>
<!-- 是否对输出SQL进行格式化 -->
<property name="format_SQL">true</property>
<!-- 连接池配置 -->
<property name="hibernate.connection.provider_class">
org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
</property>
<!-- 这是C3P0随时准备好的最少的JDBC连接数量 -->
<property name="hibernate.c3p0.min_size">5</property>
<!-- 连接池中JDBC连接的最大数量 -->
<property name="hibernate.c3p0.max_size">20</property>
<!-- 超时周期,在它之后,闲置连接将从池中移除 -->
<property name="hibernate.c3p0.timeout">300</property>
<!-- 最多高速缓存100个预编译语句,该属性是使Hibernate获得较好性能的要素。 -->
<property name="hibernate.c3p0.max_statements">100</property>
<!-- 连接被自动验证前,以秒为单位的闲置时间 -->
<property name="hibernate.c3p0.idle_test_period">3000</property>
<!-- 注册ORM实体类映射文件-->
<mapping resource="实体类映射文件路径" />
…
</session-factory>
</hibernate-configuration>
3.测试连接,在工作台输入以下代码测试连接:
public class HibernateTest {
public static void main(String[] args) {
//获取配置,默认读取classpath根目录下名为hibernate.cfg.xml的文件
Configuration cfg = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
//创建SessionFactory
SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
//获取session
System.out.println(factory.openSession());
}
}
注意:默认读取classpath根目录下名为hibernate.cfg.xml的文件,若路径有变动,需将代码作出如下如下改动:
Configuration cfg = new Configuration().configure("hibernate.cfg.xml文件的路径名");
例如:
Configuration cfg = new Configuration().configure("/cfg/hibernate.cfg.xml");