这篇文章主要谈谈Hibernate的入门开发,例子很简单,就是向数据表中添加用户名和密码。我分别使用了三种方法,一种是直接写代码,写Hbm映射文件等;一种是通过Hbm映射文件来生成代码;一种是通过代码来生成Hbm映射文件。使用了一些自动化工具,XMLBuddy是用来编辑XML文件的,JBoss Eclipse IDE是用来编写Doclet标记的。这篇文章还谈到了一些Eclipse的使用技巧,比如建立“用户库”、“生成 Getter 和 Setter”等。
关于一些软件的使用技巧,我以前的文章都有提及,这里不多说了,必要时会提示一下。
1. 所需软件
同时也要把 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时,可以将其先导出,然后再导入即可。
这样做,对库文件便于管理,而且如果需要替换或者升级的话都比较方便。
● 设置“构建路径”
· 点击菜单“窗口”->首选项,以下都在“首选项”中配置:
这里以一个简单的程序来示范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. 映射文件
<?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&characterEncoding=GBK" 表示使用GBK进行编码 --> <property name="connection.url"> jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&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",是沿用上篇文章中的设置。
<?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(Compiled Help Manual)文件包含了丰富的图文指南,帮助用户快速掌握如何在Eclipse中...
Eclipse快速上手Hibernate.chm
### Eclipse快速上手Hibernate之入门实例详解 #### 引言 Hibernate是一个强大的对象关系映射(ORM)框架,用于简化数据库操作,使开发者能够用面向对象的方式处理数据库数据,而无需编写复杂的SQL语句。本篇文章将...
5. **示例项目或教程**:为了帮助初学者快速上手,包中可能包含了一些简单的Hibernate应用示例,或者是详细的使用教程。 使用这些工具和库,开发者可以在Eclipse环境中进行以下操作: - **实体类生成**:根据...
### MyEclipse+Hibernate快速入门知识点详解 #### 一、前言 本文档旨在通过一个简单易懂的方式,介绍如何在MyEclipse环境下配置并使用Hibernate框架。这是一份非常适合初学者使用的指南,特别是对于那些希望快速...
标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...
理解并实践这些基本概念和步骤,将帮助你快速上手Hibernate开发。通过运行这些源代码示例,你可以看到如何将对象与数据库之间的映射关系具体化,并实际操作数据库。同时,也可以学习到如何在Web环境中整合Hibernate...
【MyEclipse+Hibernate快速入门】的文档主要介绍了如何在MyEclipse环境下使用Hibernate框架进行Java项目的开发。本文档适用于具备Java基础、Eclipse及MyEclipse使用经验的开发者,旨在帮助他们快速掌握Hibernate的...
这个压缩包包含了使用Hibernate进行入门学习的源代码,且整个项目是一个Eclipse工程,可以直接运行,非常适合初学者快速上手。 在开始之前,确保你已经安装了Java开发工具包(JDK)和Eclipse IDE。接下来,我们将...
- **易于配置**:提供简洁的配置选项,便于快速上手。 - **高效运行**:通过缓存机制和其他优化技术,提高应用程序性能。 - **丰富的映射选项**:支持多种映射方式,灵活适应不同的需求场景。 - **查询语言**:...
本书通过详细且易懂的步骤,引导读者进行Eclipse的基本配置,使初学者能够快速上手。同时,书中还涵盖了如何将Eclipse与流行的持久层框架Hibernate集成,以及如何利用Spindle工具提升开发效率。 在Eclipse的基础...
对于初学者,理解并应用Hibernate可能有一定挑战,但通过实际的Eclipse项目实践,可以快速上手。这个项目提供了一个基础的示例,展示如何配置Hibernate、创建实体类、编写查询以及显示查询结果。导入到Eclipse后,...
【标题】:MyEclipse_Hibernate_快速入门中文版 【描述】:这份资源是针对初学者设计的MyEclipse与Hibernate集成开发的快速入门教程,以中文详细...教程内容详细,适合初学者逐步实践,有助于快速上手Hibernate框架。
为了能够快速上手,建议使用相同的环境配置。 1. **Eclipse 与 MyEclipse**:安装 Eclipse 3 及其配套的 MyEclipse 版本。 2. **数据库配置**:根据自己的 MySQL 用户名和密码修改 `hibernate.properties` 文件。 3...