hibernate3.2开篇

准备工作:下载hibernate-3.2.0.ga.zip压缩包.

 

1、介绍hibernate-3.2包结构.
hibernate3.2开篇_第1张图片

Doc:存放各种帮助文档。

Eg:存放一些用hibernate实现的小例子。

Etc:存放配置文件的案例。

Grammar:语法

Lib:存放第三方的依赖包。

SrcHibernate3.jar所有源代码

Test:存放对每一个类的测试程序。

Hibernate3.jarHibernate核心Jar包。 

 

2、创建Java项目

3、创建User Library,加入依赖包

    操作步骤:windowàPreferencesàJavaàBuild PathàUser Libraries,新建一个Library后,分别Add JARs…如下JAR包。

* HIBERNATE_HOME/lib/*.jar

         * HIBERNATE_HOME/hibernate3.jar

         * 加入数据库驱动Jar

4、提供hibernate.cfg.xml文件,完成基本的配置

   在HIBERNATE_HOME/etc中找到hibernate.cfg.xml文件,拷贝到工程的src的根目录下。完成如下配置(关键配置文件中键值对该如何书写,可以参考log4j.properties文件):

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
	    <!-- 配置数据库连接 -->
		<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.username">HIBERNATETEST</property>
		<property name="hibernate.connection.password">HIBERNATETEST</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
	</session-factory>
</hibernate-configuration>

 

5、建立实体类User.java

package com.ysj;

import java.util.Date;

public class User {
	// 用户名主键
	private String id ;
	// 姓名
	private String name ;
	// 密码
	private String password ;
	// 创建时间
	private Date createTime ;
	// 失效时间
	private Date expireTime ;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public Date getExpireTime() {
		return expireTime;
	}
	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}
}

 

6、提供User.hbm.xml文件,完成实体类的映射

     在HIBERNATE_HOME/eg\org\hibernate\auction中找到User.hbm.xml文件,拷贝到工程的User.java所在目录下。完成如下配置:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
        <!-- name属性是类的全路径, table属性是对应数据库的表名 -->
	<class name="com.ysj.User" table="t_user">
	    <!-- 配置主键 -->
		<id name="id">
		    <!-- 主键的生成策略,32位的字符串 -->
			<generator class="uuid"/>
		</id>
		<!-- 配置其他属性 -->
		<property name="name"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>

将User.hbm.xml文件加入到hibernate.cfg.xml;修改hibernate.cfg.xml配置文件,修改后的效果如下: 

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
	    <!-- 配置数据库连接 -->
		<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.username">HIBERNATETEST</property>
		<property name="hibernate.connection.password">HIBERNATETEST</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<!-- 配置关系映射 -->
		<mapping resource="com/ysj/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 

7、编写工具类ExportDB.java,将hbm生成ddl,也就是hbm2ddl(hibernate映射文件生成数据库的DDL)

     ExportDB.java代码如下(创建数据表t_user):

package com.ysj;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class ExportDB {

	/**
	 * 通过hbm生成DDL
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * Configuration cfg = new Configuration();  // 默认读取的是根目录下hibernate.properties配置文件.
		 * Configuration cfg = new Configuration().configure() ;  // 默认读取的是根目录下hibernate.cfg.xml配置文件.
		 */
		Configuration cfg = new Configuration().configure() ; 
		/**
		 * 根据给定的配置文件生成相应模式类(用于生成数据表)
		 */
		SchemaExport export = new SchemaExport(cfg) ;
		/**
		 * 参数1 : 是否在控制台中输出建表语句
		 * 参数2 : 是否把建表语句导出到数据库中
		 */
		export.create(true, true);

	}

}

 

8、建立客户端类Client,添加用户数据到数据库

     Client.java代码如下:

package com.ysj;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Client {

	/**
	 * 往数据库中插入User对象
	 * @param args
	 */
	public static void main(String[] args) {
		// 读取hibernate.cfg.xml配置文件
		Configuration cfg = new Configuration().configure() ;
		// 创建SessionFactory(相当于数据库镜像,最好只创建一个)
		SessionFactory factory = cfg.buildSessionFactory() ;
		
		Session session = null ;
		try{
			// 取得Session(持久化管理器,该对象可以完成增删改查)
			session = factory.openSession() ;
			// 开启事务(自己手动开启事务)
			session.beginTransaction() ;
			User user = new User() ;
			user.setName("Test") ;
			user.setPassword("123") ;
			user.setCreateTime(new Date()) ;
			user.setExpireTime(new Date()) ;
			// 保存User对象
			session.save(user) ;
			// 提交事务
			session.getTransaction().commit() ;
		}catch(Exception e){
			e.printStackTrace() ;
			// 回滚事务
			session.getTransaction().rollback() ;
		}finally{
			// 关闭session
			if(session != null){
				if(session.isOpen()){
					session.close() ;
					session = null ;
				}
			}
		}
	}
}

 

 

最好在hibernate.cfg.xml中加入如下配置项,方便观察hibernate sql的生成:

	<property name="hibernate.show_sql">true</property>
	<property name="hibernate.format_sql">true</property>

修改后的 hibernate.cfg.xml 文件如下:

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
	    <!-- 配置数据库连接 -->
		<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.username">HIBERNATETEST</property>
		<property name="hibernate.connection.password">HIBERNATETEST</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<!-- 是否在控制台输出全部SQL语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 是否在控制台输出全部SQL语句,并且对SQL语句进行格式化 -->
		<property name="hibernate.format_sql">true</property>
		<!-- 配置关系映射 -->
		<mapping resource="com/ysj/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 

最好加入log4j配置文件,将该配置文件拷贝到src下,便于程序的调试

HIBERNATE_HOME/etc中找到log4j.properties文件,拷贝到工程的src的根目录下。使用默认的文件就可以,如果不想看到info和debug信息,可以在log4j.properties文件中把info和debug的信息注释掉。

 

附件中存放的是用MyEclipse6.0的File System导出的练习工程,有需要的可以直接下载解压导入进行测试.

 

 

 

 

你可能感兴趣的:(Hibernate,hibernate3.2)