0. 前言
以下为使用hibernate编写基于配置文件的简单实例,代码已经上传,导入eclipse中,直接执行XmlTest.java就可以了。代码中还包含了基于注解方式的代码。
1. 环境准备
以下为我测试时使用的环境,仅供参考
JDK:jdk1.7.0_67
hibernate:4.3.7
eclipse:4.4
数据库:oracle11g
2. 下载hibernate相关jar包
官网下载地址为:http://sourceforge.net/projects/hibernate/files/hibernate3/
3.创建JavaBean
package org.xkx.demo.xml.entity;
public class UseXmlEntity {
private int id;
private String username;
private String password;
//以下省略所有get、set方法
}
4. 创建XXX.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.xkx.demo.xml.entity.UseXmlEntity" table="USE_XML_ENTITY"> <id name="id" column="CID"> <generator class="increment" /> </id> <property name="username" column="USERNAME" /> <property name="password" column="PASSWORD" /> </class> </hibernate-mapping>
5. 创建主要配置文件hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8" ?> <!-- 表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。 hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在 Hibernate3.1.3软件包中的src\org\hibernate目录中找到此文件 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!--声明Hibernate配置文件的开始 --> <hibernate-configuration> <!--表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作 --> <session-factory> <!--以下所有属性的name可以省略“hibernate.”的前置字符,例如“hibernate.connection.driver_class -> connection.driver_class” --> <!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序 --> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机,hibernate是数据库名 --> <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <!--连接数据库的用户名 --> <property name="hibernate.connection.username">D_C_XKX</property> <!--连接数据库的密码 --> <property name="hibernate.connection.password">D_C_XKX</property> <!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。 --> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> <!--数据库连接池的大小 --> <property name="hibernate.connection.pool.size">20</property> <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于查错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率 --> <property name="hibernate.show_sql">true</property> <!-- Drop and re-create the database schema on startup:系统启动时是否对数据库的表进行删除和重建操作 --> <!-- create:表示启动的时候先drop,再create --> <!-- create-drop: 也表示创建,只不过再系统关闭前执行一下drop --> <!-- update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新 --> <!-- validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新 --> <property name="hbm2ddl.auto">create</property> <!--指定映射文件的路径,例如“com/user/UserInfo.hbm.xml” --> <mapping resource="org/xkx/demo/xml/entity/UseXmlEntity.hbm.xml" /> </session-factory> </hibernate-configuration>
6. 运行测试程序,部分代码如下
Configuration cfg = new Configuration().configure("org/xkx/demo/xml/hibernate.cfg.xml");
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
SessionFactory buildSessionFactory = cfg.buildSessionFactory(sr);
Session session = buildSessionFactory.openSession();
Transaction tx = session.beginTransaction();
for (int i = 0; i < 2; i++) {
UseXmlEntity customer = new UseXmlEntity();
customer.setUsername("用户名" + i);
customer.setPassword("密码");
session.save(customer);
}
tx.commit();
session.close();
buildSessionFactory.close();