`
seawavenews
  • 浏览: 230373 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Eclipse快速上手Hibernate

阅读更多
    这篇文章主要谈谈Hibernate的入门开发,例子很简单,就是向数据表中添加用户名和密码。我分别使用了三种方法,一种是直接写代码,写Hbm映射文件等;一种是通过Hbm映射文件来生成代码;一种是通过代码来生成Hbm映射文件。使用了一些自动化工具,XMLBuddy是用来编辑XML文件的,JBoss Eclipse IDE是用来编写Doclet标记的。这篇文章还谈到了一些Eclipse的使用技巧,比如建立“用户库”、“生成 Getter 和 Setter”等。
 
   关于一些软件的使用技巧,我以前的文章都有提及,这里不多说了,必要时会提示一下。
   
 
 
1. 所需软件
Ant 1.6.2        http://ant.apache.org
 
 Eclipse 3.0.1 及 语言包
 
 
XMLBuddy          http://www.xmlbuddy.com/
    下载             XMLBuddy 2.0.38   
 
   看看说明,需要挑选与使用的eclipse相对应的版本,这里选择JBossIDE-1.4.1-e30.zip,这是它的镜像下载地址:
 
Hibernate         http://www.hibernate.org/
     下载            Hibernate 2.1.8
 
   同时也要把 Hibernate Extensions 2.1.3 下载了,它包含一些工具类。
 
 
●  MySQL 4.1.8
     注意需要mysql-connector-java-3.0.16-ga-bin.jar文件
 
 
 
2. 安装和配置 
 
    这里着重指出一下,需要在环境变量中设置 ANT_HOME ,并将其指向Ant安装目录,还要在Path变量值中添加 “%ANT_HOME%\bin;” 可以参考 java环境变量设置
 
 · XMLBuddy 和Jboss-ide 我都是采用links方式安装的,
 
●  建立库文件夹:
 
   在D盘下新建一个java目录,在此目录下新建一个Hibernate子目录,在此子目录下再新建一个lib子目录。
D:\
  -java
     -Hibernate
               -lib
<!----> · 将下载的hibernate-2.1.8.zip解压,如解压后的目录名为hibernate-2.1,将这个目录下的hibernate2.jar复制到先前建立的lib目录下,即D:\java\Hibernate\lib目录;
 
<!----> · 然后将hibernate-2.1目录下的lib子目录中的以下文件也复制到这个lib目录下:
jta.jar  cglib-full-2.0.2.jar  commons-collections-2.1.1.jar  commons-logging-1.0.4.jar commons-lang-1.0.1.jar  dom4j-1.4.jar ehcache-0.9.jar log4j-1.2.8.jar odmg-3.0.jarodmg-3.0.jar
 
 · 解压hibernate-extensions-2.1.3.zip,将其子目录tools中的hibernate-tools.jar和子目录lib中的velocity-1.3.1.jar、jdom.jar 也复制到D:\java\Hibernate\lib目录中
 
 · 解压xdoclet-bin-1.2.2.zip,将其子目录lib中的xdoclet-1.2.2.jar、xdoclet-hibernate-module-1.2.2.jar、xjavadoc-1.1.jar、xdoclet-xdoclet-module-1.2.2.jar 也复制到D:\java\Hibernate\lib目录中
 
· 最后将mysql-connector-java-3.0.16-ga-bin.jar文件复制到这个lib目录下。
 
   这样,需要用到的库文件已经准备好了,如果认为这样比较麻烦,也可以将jar文件全部复制到lib目录。下面介绍如何在Eclipse中设置“用户库”。
 
 
 
●  设置“用户库”
 
·窗口 ->首选项 ->Java ->构建路径 ->用户库,
 
· 然后单击“添加JAR”
 
   这样,一个用户库文件就做好了,如果要更新Eclipse时,可以将其先导出,然后再导入即可。
这样做,对库文件便于管理,而且如果需要替换或者升级的话都比较方便。
 
 
●  设置“构建路径”
 
· 点击菜单“窗口”->首选项,以下都在“首选项”中配置:
   Java->构建路径
  
 
 
 
 
 
    这里以一个简单的程序来示范Hibernate的配置与功能,在这个例子中的一些操作,实际上会使用一些自动化工具来完成,而不一定亲自手动操作设定,这边完全手动的原因,在于让你可以知道Hibernate的基本流程。
     这是整个项目的结构:
 
好了,下面就开始创建项目了。
  
 
1. 创建项目
 
· 新建一个Java项目:HibernateBegin_1,注意选中“创建单独的源文件夹和输出文件夹”。点击“下一步”,切换到“库”,点击“添加库”,如下图:
 
· 选择“用户库”
 
· 勾选先前设置好的hibernate用户库。
 
 
2. 建立可持久化类 
 
· 下面开始创建一个新类:User ;包名:javamxj.hibernate
然后添加三个变量(斜体),代码如下:
/*  * 采用常规方法开发一个简单的Hibernate实例 * 创建日期 2005-3-31 * @author javamxj(分享java快乐) * @link  Blog: htpp://javamxj.mblogger.cn   *              htpp://blog.csdn.net/javamxj/  */package javamxj.hibernate;public class User {    private int id;    private String username;    private String password;	}
· 点击工具栏上的“源代码(S)”,选择其中的“生成 Getter 和 Setter”(右击,在弹出菜单也可选择),如图:
 
点击“确定”后,生成如下代码:
/*  * 采用常规方法开发一个简单的Hibernate实例 * 创建日期 2005-3-31 * @author javamxj(分享java快乐) * @link  Blog: htpp://javamxj.mblogger.cn   *                 htpp://blog.csdn.net/javamxj/  */package javamxj.hibernate;public class User {    private int id;    private String username;    private String password;		public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}}
 
    好了,这个类完成了。它是一个普通的Java对象(Plain Old Java Objects,就是POJOs,有时候也称作Plain Ordinary Java Objects),表示一个数据集合。下面建立一个Hbm文件将这个类映射到数据库的表格上。
 
 
3. 映射文件
 
   在javamxj.hibernate包下,新建一个名称为“User.hbm.xml”的文件,使用XMLBuddy编辑它(参考:利用XMLBuddy在Eclipse中开发XML ),这样比较方便。文件内容如下:
<?xml version="1.0" encoding="GBK"?><!DOCTYPE hibernate-mapping    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">	<hibernate-mapping>    <class name="javamxj.hibernate.User" table="UserTable">        <id name="id">            <generator class="assigned" />        </id>        <property name="username"  />        <property name="password" />		    </class></hibernate-mapping>
    这个XML文件定义了对象属性映射到数据库表的关系,这里采用了assigned(程序设置)方式生成主键。当然还可以使用其它的方式来产生主键,后面的文章就采用了其它的方式产生主键。
 
   <property>标签用于定义Java对象的属性,这里只定义了最简单的方式,由Hibernate自动判断Java对象属性与数据库表名称对应关系。在<property/>标签上的额外设定(像是not null、sql-type等),则可以用于自动产生Java对象与数据库表的工具上。

 
 
4. 配置文件
 
   Hibernate可以使用XML或属性文件来进行配置,配置文件名默认为“hibernate.cfg.xml”(或者hibernate.properties)。
   在src目录下,新建一个hibernate.cfg.xml文件,内容如下:
<?xml version='1.0' encoding='GBK'?><!DOCTYPE hibernate-configuration    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration>    <session-factory>        <!-- 是否将运行期生成的SQL输出到日志以供调试 -->        <property name="show_sql">true</property>		        <!-- SQL方言,这里设定的是MySQL -->        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>		        <!-- JDBC驱动程序 -->        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>		        <!-- JDBC URL, "?useUnicode=true&amp;characterEncoding=GBK" 表示使用GBK进行编码 -->        <property name="connection.url">	  jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&amp;characterEncoding=GBK        </property>		        <!-- 数据库用户名 -->        <property name="connection.username">root</property>		        <!-- 数据库密码 -->        <property name="connection.password">javamxj</property>        <!-- 指定User的映射文件 -->        <mapping resource="javamxj/hibernate/User.hbm.xml"/>           </session-factory></hibernate-configuration>
 
注意:这里使用的是“jdbc:mysql://localhost:3306/HibernateTest?useUnicod...”中的HibernateTest数据库,你需要在MySql中建立这个数据库。
 
 
5. 测试程序
 
   在javamxj.hibernate包下,新建一个Test类,内容如下:
/*  * 简单测试一下User类 * 创建日期 2005-3-31 * @author javamxj(分享java快乐) */package javamxj.hibernate;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;public class Test {	public static void main(String[] args) {		try {			SessionFactory sf = new Configuration().configure()					.buildSessionFactory();			Session session = sf.openSession();			Transaction tx = session.beginTransaction();			User user = new User();			user.setUsername("Blog");			user.setPassword("分享java快乐");			session.save(user);			tx.commit();			session.close();		} catch (HibernateException e) {			e.printStackTrace();		}	}}
 
   这里简单说说一下流程,首先初始化Configuration,加载Hibernate的配置信息,然后Configuration取得SessionFactory对象,并由它来开启一个Session,它代表对象与表格的一次会话操作,而 Transaction则表示一组会话操作,我们只需要直接操作User对象,并进行Session与Transaction的相关操作, Hibernate就会自动完成对数据库的操作。
 
 
6. 配置数据库
 
   在运行测试程序之前,还必须先设置好数据库。
   在MySQL中建立一个HibernateTest数据库,并建立UserTable表,SQL语句如下:
 
CREATE TABLE usertable (
  ID int(6) NOT NULL auto_increment,
  username varchar(24) NOT NULL default '',
  password varchar(24) NOT NULL default '',
  PRIMARY KEY  (ID)
);
    这里,HibernateTest与hibernate.cfg.xml配置文件中的HibernateTest相对应,UserTable与hbm映射文件中的UserTable相对应。
 
 
7. 运行程序
 
   右击Test.java,点击运行,可以看到控制台输出一系列信息,最后一条输出语句应该是:
Hibernate: insert into UserTable (username, password, id) values (?, ?, ?)
   在下篇文章中会介绍如何利用log4j来控制输出信息。
 
   同时,在数据库中可以看到,数据已经添加进表里了:
 
 
小结:
 
    Hibernate原理方面我不想多说,实际上知道也不多,况且这方面的资料很多,比如Hibernate本身自带的中文文档、夏昕编写的《Hibernate开发指南》、良葛格编写的“Hibernate入门”等都是非常不错的,现在关于Hibetnate的书籍也多了起来。
 
    我所作的工作就是要使新手能尽快上手Hibernate,理论方面我不想过多纠缠,尽量以实例说话。我想,与其凭空说一个技术多好多好,倒不如给我一个可以上手的实例操作一下。好了,不多说废话了。
 
  
 
小结:
 
    Hibernate原理方面我不想多说,实际上知道也不多,况且这方面的资料很多,比如Hibernate本身自带的中文文档、夏昕编写的《Hibernate开发指南》、良葛格编写的“Hibernate入门”等都是非常不错的,现在关于Hibetnate的书籍也多了起来。
 
    我所作的工作就是要使新手能尽快上手Hibernate,理论方面我不想过多纠缠,尽量以实例说话。我想,与其凭空说一个技术多好多好,倒不如给我一个可以上手的实例操作一下。好了,不多说废话了。
   这篇文章是上篇文章《Eclipse快速上手Hibernate--1. 入门实例》的延续,主要说的是如何利用Hbm映射文件产生普通的Java对象及数据表。可以参考Hibernate自带的文档《HIBERNATE - 符合Java习惯的关系数据库持久化》的第15章--《工具箱指南》一节。同样,这篇文章没有过多谈理论,只是给出了一个完整的实例加以说明。相关配置请参考上篇文章
 
 
1. 创建项目
 
·  新建一个Java项目:HibernateBegin_2,注意选中“创建单独的源文件夹和输出文件夹”,同时添加“用户库”:hibernate。
 
2.  映射文件User.hbm.xml
 
·  新建一个包,包名:javamxj.hibernate,然后在此包下新建一个文件,文件名:User.hbm.xml。
User.hbm.xml
<?xml version="1.0" encoding="GBK"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" 	"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">	<hibernate-mapping>			<class name="javamxj.hibernate.User" table="UserTable2">				<meta attribute="class-description"> 			运行 Hbm2Java 任务, 利用 hbm.xml文件生成Java类文件 			@author javamxj(分享java快乐) 			@link Blog: htpp://javamxj.mblogger.cn 			            htpp://blog.csdn.net/javamxj/ 		</meta>				<id name="id" type="string" unsaved-value="null" length="32" column="ID">			<generator class="uuid.hex"/>		</id>				<property name="username" type="string" not-null="true" length="24">			<meta attribute="field-description">@param 用户名</meta>		</property>				<property name="password" type="string" not-null="true" >			<column name="密码" length="24" not-null="true"></column>		</property>			</class></hibernate-mapping>   
 
●  与上篇文章中的User.hbm.xml文件比较,可以发现标签上增加了许多额外的设定。
·  这里<meta>标签中的内容将插入到类的javadoc说明去。 
·  <id>标签使用 uuid.hex 来定义主键的产生算法,UUID算法使用IP地址、JVM的启动时间、系统时间和一个计数值来产生主键。
·  <property>标签中的<column>用于生成数据表中的列。
 
 
3. 构建文件Build.xml
 
·  将上篇文章中的“hibernate.cfg.xml”配置文件复制到src目录下。
 
·  在项目根目录下建立一个build.xml,这个文件含有四个任务,这里会用到“generate-code”、“schemaexport”两个任务,至于用法可以看注释。要注意环境变量的设置要符合自己的实际配置,比如库文件目录的设置是"D:/java/Hibernate/lib",是沿用上篇文章中的设置。

build.xml

<?xml version="1.0" encoding="GBK"?><project name="利用工具开发Hibernate" default="help" basedir=".">	<!-- ******  环境设置,可以根据自己的实际配置自行更改 ***** -->	<!-- 源文件目录, 可以通过 项目->属性->Java构建路径 更改 -->	<property name="src.dir" value="./src" />	<!-- 输出的class文件目录,可以通过 项目->属性->Java构建路径 更改 -->	<property name="class.dir" value="./bin" />	<!-- 库文件目录  -->	<property name="lib.dir" value="D:/java/Hibernate/lib" />	<!-- 定义类路径 -->	<path id="project.class.path">		<fileset dir="${lib.dir}">			<include name="*.jar"/>		</fileset>		<pathelement location="${class.dir}" />	</path>	<!-- ************************************************************** -->	<!-- 使用说明 -->	<!-- ************************************************************** -->	<target name="help">		<echo message="利用工具开发Hibernate" />		<echo message="-----------------------------------" />		<echo message="" />		<echo message="提供以下任务:" />		<echo message="" />		<echo message="generate-code     --> 运行Hbm2Java,利用 hbm.xml 文件生成Java类文件" />		<echo message="generate-hbm      --> 运行HibernateDoclet,生成 Hibernate 类的映射文件" />		<echo message="schemaexport     --> 运行SchemaExport,利用 hbm.xml 文件生成数据表" />		<echo message="" />	</target>	<!-- ************************************************************** -->	<!-- Hbm2Java 任务 -->	<!-- ************************************************************** -->	<target name="generate-code" >		<echo message="运行 Hbm2Java 任务, 利用 hbm.xml 文件生成Java类文件"/>		<taskdef name="hbm2java"		     classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"	         classpathref="project.class.path">		</taskdef>		<hbm2java output="${src.dir}">			<fileset dir="${src.dir}">				<include name="**/*.hbm.xml"/>			</fileset>		</hbm2java>	</target>	<!-- ************************************************************** -->	<!-- HibernateDoclet 任务 -->	<!-- ************************************************************** -->	<target name="generate-hbm" >		<echo message="运行HibernateDoclet,生成 Hibernate 类的映射文件"/>		<taskdef name="hibernatedoclet" 			classname="xdoclet.modules.hibernate.HibernateDocletTask" 			classpathref="project.class.path">		</taskdef>		<hibernatedoclet destdir="${src.dir}" 			excludedtags="@version,@author,@todo" force="true" encoding="GBK" 			verbose="true">			<fileset dir="${src.dir}">				<include name="**/*.java"/>			</fileset>			<hibernate version="2.0" xmlencoding="GBK" />		</hibernatedoclet>	</target>	<!-- ************************************************************** -->	<!-- SchemaExport 任务 -->	<!-- ************************************************************** -->	<target name="schemaexport">		<echo message="运行SchemaExport,利用 hbm.xml 文件生成数据表"/>		<taskdef name="schemaexport" 			classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask" 			classpathref="project.class.path">		
分享到:
评论

相关推荐

    Eclipse快速上手Hibernate CHM

    《Eclipse快速上手Hibernate CHM》是一份详细的教程,主要针对使用Eclipse集成开发环境进行Hibernate框架学习的初学者。这份CHM(Compiled Help Manual)文件包含了丰富的图文指南,帮助用户快速掌握如何在Eclipse中...

    Eclipse快速上手Hibernate.chm

    Eclipse快速上手Hibernate.chm

    Eclipse快速上手Hibernate之入门实例

    ### Eclipse快速上手Hibernate之入门实例详解 #### 引言 Hibernate是一个强大的对象关系映射(ORM)框架,用于简化数据库操作,使开发者能够用面向对象的方式处理数据库数据,而无需编写复杂的SQL语句。本篇文章将...

    Hibernate Eclipse开发必备包

    5. **示例项目或教程**:为了帮助初学者快速上手,包中可能包含了一些简单的Hibernate应用示例,或者是详细的使用教程。 使用这些工具和库,开发者可以在Eclipse环境中进行以下操作: - **实体类生成**:根据...

    MyEclipse+Hibernate快速入门中文版

    ### MyEclipse+Hibernate快速入门知识点详解 #### 一、前言 本文档旨在通过一个简单易懂的方式,介绍如何在MyEclipse环境下配置并使用Hibernate框架。这是一份非常适合初学者使用的指南,特别是对于那些希望快速...

    菜鸟快速运行第一个hibernate

    标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...

    Hibernate开发快速入门例子源代码

    理解并实践这些基本概念和步骤,将帮助你快速上手Hibernate开发。通过运行这些源代码示例,你可以看到如何将对象与数据库之间的映射关系具体化,并实际操作数据库。同时,也可以学习到如何在Web环境中整合Hibernate...

    MyEclipse+Hibernate+快速入门+中文版.pdf

    【MyEclipse+Hibernate快速入门】的文档主要介绍了如何在MyEclipse环境下使用Hibernate框架进行Java项目的开发。本文档适用于具备Java基础、Eclipse及MyEclipse使用经验的开发者,旨在帮助他们快速掌握Hibernate的...

    Hibernate入门实例源代码,eclipse工程,可直接运行。

    这个压缩包包含了使用Hibernate进行入门学习的源代码,且整个项目是一个Eclipse工程,可以直接运行,非常适合初学者快速上手。 在开始之前,确保你已经安装了Java开发工具包(JDK)和Eclipse IDE。接下来,我们将...

    MyEclipse Hibernate 快速入门 中文版(PDF)

    - **易于配置**:提供简洁的配置选项,便于快速上手。 - **高效运行**:通过缓存机制和其他优化技术,提高应用程序性能。 - **丰富的映射选项**:支持多种映射方式,灵活适应不同的需求场景。 - **查询语言**:...

    Eclipse开发准备教程

    本书通过详细且易懂的步骤,引导读者进行Eclipse的基本配置,使初学者能够快速上手。同时,书中还涵盖了如何将Eclipse与流行的持久层框架Hibernate集成,以及如何利用Spindle工具提升开发效率。 在Eclipse的基础...

    Hibernate 显示数据库数据

    对于初学者,理解并应用Hibernate可能有一定挑战,但通过实际的Eclipse项目实践,可以快速上手。这个项目提供了一个基础的示例,展示如何配置Hibernate、创建实体类、编写查询以及显示查询结果。导入到Eclipse后,...

    MyEclipse_Hibernate_快速入门中文版.rar

    【标题】:MyEclipse_Hibernate_快速入门中文版 【描述】:这份资源是针对初学者设计的MyEclipse与Hibernate集成开发的快速入门教程,以中文详细...教程内容详细,适合初学者逐步实践,有助于快速上手Hibernate框架。

    spring+hibernate多层web开发eclipse下的开发模板.doc

    为了能够快速上手,建议使用相同的环境配置。 1. **Eclipse 与 MyEclipse**:安装 Eclipse 3 及其配套的 MyEclipse 版本。 2. **数据库配置**:根据自己的 MySQL 用户名和密码修改 `hibernate.properties` 文件。 3...

Global site tag (gtag.js) - Google Analytics