八步详解Hibernate的搭建及使用

本文通过一个简单的用户添加实例,详细介绍Hibernate框架的基本用法,包括项目的搭建、配置文件的设置、实体类与映射文件的创建,以及如何利用Hibernate完成数据库表的自动生成与数据的持久化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      上篇博客已经把Hibernate概念和其中的核心接口介绍,下面举个实例添加用户来介绍Hibernate如何使用。

      1.创建普通的java项目。

               因为Hibernate是一个轻量级的框架,不像servlet,还必须需要tomcat的支持,Hibernate只要jdk支持即可。

       2.引入jar包。

               可以在项目中直接引入jar包,在:项目--->属性--->然后如下图:

              另一种办法就是引入库,相当于一个文件夹,把所有的jar包放到自己新建的文件夹中。在:窗体-->选项-->然后如下图:

      3.提供Hibernate的配置文件。hibernate.cfg.xml文件。完成相应的配置。

   

    

<hibernate-configuration>

<session-factory>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password">bjpowernode</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

</session-factory>

</hibernate-configuration>


 

      在这里连接mysql数据库,解释一下上面的标签。按照顺序来依次解释:第一个是连接mySql的驱动;第二个是连接的url;url后面的hibernate_first是数据库名字;第三个是和第四个分别是用户名和密码。第五个是方言。因为 hibernate对数据库封装,对不同的数据库翻译成不同的形式,比如drp中的分页,若是使用oracle数据库,则翻译成sql语句三层嵌套。若是使用mySql数据库,则翻译成limit语句。

    4.建立实体User类:

package com.bjpowernode.hibernate;

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;
	}
}


 

    5.建立User.hbm.xml,此文件用来完成对象与数据库表的字段的映射。也就是实体类的那些字段需要映射到数据库表中呢。 

   

<?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>
	<class name="com.bjpowernode.hibernate.User">
		<id name="id">
			<generator class="uuid"/>
		</id>
		<property name="name"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>


 

    6.我们也映射完毕了,但是hibernate怎么知道我们映射完了呢,以及如何映射的呢?这就需要我们把我们自己的映射文件告诉hibernate,即:在hibernate.cfg.xml配置我们的映射文件。

 

<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>


 

    7.生成数据库表。大家也看到了我们上述还没有新建数据表呢,在第三步我们只是新建了数据库而已。按照我们普通的做法,我们应该新建数据表啊,否则实体存放何处啊。这个别急,数据库表这个肯定是需要有的,这个毋庸置疑,但是这个可不像我们原来需要自己亲自动手建立哦,现在hibernate需要帮我们实现哦,如何实现嗯,hibernate会根据配置文件hibernate.cfg.xml和我们的映射文件User.hbm.xml会自动给我们生成相应的表,并且这个表的名字也给我们取好:默认是User。那如何生成表呢?

 

	//默认读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();
		
		SchemaExport export = new SchemaExport(cfg);
		export.create(true, true);


 

 8.那我们就开始进行操作啦,我们添加一个用户对象,看看hibernate是如何添加的呢?跟我们以前的做法有什么不同呢?

public class Client {

	public static void main(String[] args) {
		
		//读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();
		
		//建立SessionFactory
		SessionFactory factory = cfg.buildSessionFactory();
		
		//取得session
		Session session = null;
		try {
			session = factory.openSession();
			//开启事务
			session.beginTransaction();
			User user = new User();
			user.setName("张三");
			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 {
			if (session != null) {
				if (session.isOpen()) {
					//关闭session
					session.close();
				}
			}
		}
	}
}


 

 第八步,我们可以看到,没有我们熟悉的insert into表的sql语句了,那怎么添加进去的呢,到底添加了没?让我真实滴告诉你,确实添加进去了,不信的,可以自己尝试哦,这也是hibernate的优点,对jdbc封装的彻底,减少了我们对数据的操作时间哈。

这篇博客就是真切滴介绍了hibernate的基本用法,其中好多优点等待我们自己去发现哦,比如hibernate中的缓存机制,映射方案哦。         

本下载包说明<br/>-------------<br/><br/>本下载包是《深入浅出Hibernate》(http://www.redsaga.com/hibernate_book.html)一书的配套教程程序,目前版本为1.0.<br/><br/>本下载包与书籍的实战篇紧密结合.<br/><br/>下载包中的程序是一个简明的示例论坛程序,按照循序渐进的原则,分为不同的步骤:<br/><br/>步骤1: <br/>建立最简单的项目基础结构:Board/User/Article三个类,包含最基本的配置文件。同时,在这一步中,建立测试类,刻画项目各个类之间的契约关系。<br/><br/>步骤2:<br/>对文章的种类增加“投票”类型,展示对多型的处理。<br/><br/>步骤3:<br/>增加webwork实现的GUI。<br/>加入中文支持。<br/><br/>步骤4:<br/>升级到Hibernate 3。<br/><br/><br/>环境说明<br/>---------<br/>程序包中的程序经过测试的运行环境为:<br/>1, Tomcat 5.0.25<br/>2, Hibernate 2.1.7<br/>3, Hibernate 3.0.2<br/>4, Eclipse 3.0.1 (作为IDE)<br/>5, ant 1.6(作为build工具)<br/>6, java sdk 1.4.2<br/>7, mysql 4.1 (作为后台数据库)<br/>8, 至少250M硬盘空间(hibernate 2,3和webwork就将占据138M)<br/><br/>虽然在更高版本中应该可以不加修改的运行,但我们对此不加以保证。(v1.2将对Hibernate 3.0.4进行测试)<br/><br/>安装说明<br/>---------<br/>1, 确认jdk 1.4.2已经正确安装;<br/>2,将本程序包解压,假设目录为: x:\rs\hib-samples<br/>3, 从hibernate的sf下载区下载2.1.7与3.0.2版本:<br/> http://sourceforge.net/project/showfiles.php?group_id=40712<br/>4,将下载的hibernate包解压到x:\rs\hib-samples\hibernate-2.1与x:\rs\hib-samples\hibernate-3,目录结构应该为:<br/> x:<br/> + rs<br/> + hib-samples <--- 本文件包解压的目录<br/> + forum-step1-db-first-middlegen<br/> + forum-step1-db-first-synchronizer<br/> + forum-step2<br/> + ...<br/> + hibernate-2.1 <--- Hibernate 2.1.7解压到这里<br/> + bin <--- 确认bin与doc目录就在解压后的hibernate-2.1目录中<br/> + doc<br/> + ...<br/> + hibernate-3.0 <--- Hibernate 3.0.2解压到这里<br/> + bin <--- 确认bin与doc目录就在解压后的hibernate-3目录中<br/> + doc<br/> + ...<br/><br/>5,确认tomcat 5 安装正确。检查你的系统中,正确设置了CATALINA_HOME环境变量:<br/> 若您是windows 2000/xp系统,请右键点击"我的电脑","高级","环境变量".<br/> 确认其中的CATALINA_HOME环境变量正确指向您的tomcat 安装目录.<br/>例:<br/>CATALINA_HOME=D:\PROGRA~1\APACHE~2\TOMCAT~1.0<br/><br/>6, 确认mysql 4安装正确.<br/>我们建议两种不同的mysql安装搭配:<br/> a) 假若您使用windows平台,并且是初次使用mysql ,我们建议采用另一个免费安装包来安装,它就是easy php: http://prdownloads.sourceforge.net/quickeasyphp/easyphp1-8_setup.exe?download<br/>无需预先安装mysql,只需一次安装,它不仅包含了mysql 4.1.9,还包括了apache, php以及phpmyadmin ,而后者几乎是全球采用率最高的基于浏览器的mysql管理平台,非常简单易用。<br/><br/> b) mysql 正式安装版 + 客户端<br/> mysql可以在此下载:http://dev.mysql.com/downloads/mysql/4.1.html<br/> 客户端有多种,可以采用其自己的mysql administrator,也可以采用mysql front等商业产品。mysql front有三十天免费的无限制试用版本,是一个值得推荐的工具:http://www.mysqlfront.de/download.html<br/><br/> 在安装完mysql之后,请使用客户端或者phpmyadmin建立一个名为forum的mysql数据库,其字符集必须为UTF-8(见下面关于中文的说明,在phpmyadmin中应该选择utf8_general_ci)。另外还需要建立名为forum的用户,密码也为forum,并且对forum具有完全访问权限。(假若您希望使用其它用户名如root,您需要修改hibernate数据库配置中的连接参数——位于hibernate.cfg.xml中,以及创建数据库表时的连接参数——位于build.xml中。)<br/><br/>7, 确认ant安装正确. ant可以在此下载:<br/> http://ant.apache.org<br/>或 http://www.redsaga.com/down/apache-ant-1.6.1.zip<br/><br/>解压后,请将其bin目录置于系统path中.<br/><br/>8, 注意,我们的成品工程是forum-step3。step1和step2都是中间过程。<br/>确认您可以编译整个step3工程,在命令行下输入,<br/>cd x:\rs\hib-samples (换成您的目录)<br/>cd forum-step3<br/>ant<br/><br/>假若安装正确的话,会给出一个指令说明.<br/>执行:<br/>ant all<br/>它会自动进行数据库初始化、编译、启动tomcat容器.(此命令将会启动tomcat,因此之前tomcat必须处于停止状态)<br/><br/>然后,打开您的浏览器,输入http://localhost:8080/forum 您应该看到我们的示例正常运行.<br/><br/><br/>9, 在您的Eclipse 3中,按照书中的步骤安装hibernate synchronizer.<br/><br/>10,在您的eclipse中,建立两个User Library:<br/>菜单window -> preference -> Java -> Build Path -> User Librarys,分别建立名为Hibernate2,hibernate3,mysql-jdbc的用户库,分别包含对应的lib文件(如hibernate2包含hibernate-2.1目录下的hibernate2.jar及其lib目录下的所有jar文件);<br/><br/>11, 在您的eclipse 中,导入各个目录下的.project文件,以建立工程.(工程名为step1,step2,step3,step4)。在工程的类路径配置中,使用上一步创建的用户库(step1-step3使用Hibernate2,step4使用hibernate3)。确保没有编译错误。<br/><br/>好了,您现在可以开始阅读代码,作一些自己的改变,看看您能得到什么结果 :)<br/><br/>中文处理说明<br/>------------<br/><br/>关于中文的处理,是在step3加入的,因此在step1以及step2中,请使用英文进行实验。具体进行的处理为全程采用UTF-8编码.<br/>1,mysql创建时,字符集必须选择UTF-8<br/>2,在mysql jdbc连接的url中,必须指定采用utf-8 encoding。<br/>jdbc:mysql://localhost/forum?useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8<br/>3,在jsp页面中,指定页面采用UTF-8编码.<br/> <%@ page contentType="text/html;charset=utf-8"%><br/><br/>假若在您的项目中,必须使用GBK编码,则在以上的各个地方,都需要把UTF-8更换为GBK方可正常使用。<br/><br/><br/>版本更新<br/>-----------<br/>v1.2 (PLAN,TBD)<br/> * 转换到JTA<br/> * 给出一个脱离DAO模式的例子<br/> * 给出for hibernate 3的xdoclet例子<br/><br/>v1.1 (2005.5.25)<br/> * 分离db目录下的build.xml<br/> * 增加了对投票的图形显示<br/> * 修正了和webwork相关的一个中文bug<br/><br/>v1.0 (2005.4.20)<br/> * 初始版本<br/><br/>请访问http://www.redsaga.com/hibernate_book.html,检查此下载包的更新。<br/>
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值