技术开发 频道

Hibernate应用系列之三开发Demo篇


IT168技术文档
    本篇是建立在前两篇即《入门知识篇》和《环境配置篇》基础之上的,本篇通过对MySQL数据库中test数据库中Users表的操作,这里主要是向表中增加记录,来展示如何在Eclipse中使用Hibernate. 

    准备工作: 
    在进行创建项目之前,先将《环境配置篇》中下载的Hibernate3.1构建到eclipse中来,将下载的Hibernate-3.1.3.zip解压.解压后目录为:


    Hibernate3.jar这个文件复制到lib文件夹中,同时也将上篇中下载的MySQL Connector/J解压,解压后将其目录下的mysql-connector-java-5.0.3-bin.jar这个文件复制到lib文件中去。一会创建项目时要用到这个lib文件。 
    在eclipse中,通过”窗口—>首选项-Java—构建路径-用户库”。

    然后单击“添加JAR”,将Hibernate-3.1.3.zip解压目录中的lib文件中所有的jar文件(当然包括上面复制到该文件夹中的Hibernate3.jar和mysql-connector-java-3.0.10-stable-bin.jar)添加进来。


    这里的lib文件夹是上面提到的Hibernate-3.1.3.zip解压目录中的lib文件。 

    1. 创建项目 
    启动eclipse,,通过”文件->新建->项目”来建立Java项目,弹出如下图所示的对话框:


    选择”Java项目”,点击”下一步”,给项目命名,这里命名为:HibernateDemo,同时将”创建单独的源文件夹和输出文件夹”选上,如下图:

   


IT168技术文档
    点击”下一步”,选择”库”标签中的”添加库”

    勾选先前设置好的hibernate3.1用户库


    点击”完成”,从而完成对Java项目HibernateDemo的创建. 

    2. 建立可持久化类User.java 
    将刚建立的HibernateDemo项目展开



    右键点击src,通过”新建—>类”来创建User.java

    包名用useradmin,类的名称是User. 
    在User的类中添加三个变量:
package userdmin; /* * Copyright (c) 2006,Science and Technology Of NCEPU * All rights reserved. * * FileName:User * Description:description of the file * * Version:1.0 * Author:gmplayer * FinishDate:2006.9.1 * */ public class User { private int id; private String username; private String password; }
    通过点击工具栏上的”源代码—>生成Getter和Setter方法”,弹出对话框。






IT168技术文档
    点击“确定”,生成如下代码.
package userdmin; /* * Copyright (c) 2006,Science and Technology Of NCEPU * All rights reserved. * * FileName:User * Description:description of the file * * Version:1.0 * Author:gmplayer * FinishDate:2006.9.1 * */ public class User { private int id; private String username; private String password; /** * @return id */ public int getId() { return id; } /** * @param id 要设置的 id */ public void setId(int id) { this.id = id; } /** * @return password */ public String getPassword() { return password; } /** * @param password 要设置的 password */ public void setPassword(String password) { this.password = password; } /** * @return username */ public String getUsername() { return username; } /** * @param username 要设置的 username */ public void setUsername(String username) { this.username = username; } }
    好了,这个类完成了。它是一个普通的Java对象(Plain Old Java Objects,就是POJOs,有时候也称作Plain Ordinary Java Objects),表示一个数据集合。下面建立一个Hbm文件将这个类映射到数据库的表格上。 

    3. 映射文件 
    右键点击HibernateDemo下的src文件,通过”新建—>文件”,来建立一个名为”User.hbm.xml”的文件,文件内容如下:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.1.dtd"> <hibernate-mapping> <class name="useradmin.User" table="Users"><!--把类和数表关联起来--> <id name="id" unsaved-value="null"> <!--id的产生方式是assigned--> <generator class="assigned" /> </id> <property name="username" type="string" /><!--映射用户姓名--> <property name="password" type="string" /><!--映射用户密码--> </class> </hibernate-mapping>
    其中,代码中useradmin.User表示,类名为useradmin包下的User类,表为数据库中的Users表.
这个XML文件定义了对象属性映射到数据库表的关系,这里采用了assigned(程序设置)方式生成主键。 

    4. 配置文件 
    Hibernate可以使用XML或属性文件来进行配置,配置文件名默认为“hibernate.cfg.xml”, 在src目录下,新建一个hibernate.cfg.xml文件,与User.hbm.xml文件在同一目录下,内容如下:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.1.dtd"> <hibernate-configuration> <session-factory > <property name="show_sql">true</property><!--显示SQL语言--> <property name="connection.driver_class"><!--指定连接MySQL的驱动--> com.mysql.jdbc.Driver </property> <property name="connection.url"> jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=GBK
<!--连接数据库的URL,库名是schoolProject,”useUnicode=true&amp;characterEncoding=GBK”
意思是采用中文编码-->
</property> <property name="connection.username"> <!--连接的登录名--> root </property> <property name="connection.password"><!--登录密码--> root </property> <property name="dialect"> <!--指定连接的语言--> org.hibernate.dialect.MySQLDialect </property> <mapping resource="User.hbm.xml" /><!--映射User这个资源--> </session-factory> </hibernate-configuration>

    如果hibernate.cfg.xml文件和User.hbm.xml文件不在同一目录下,可以通过修改hibernate.cfg.xml文件中的<mapping resource="User.hbm.xml" />来映射User这个资源.如果User.hbm.xml这个文件在useradmin目录下, User.hbm.xml与hibernate.cfg.xml在同级目录下,<mapping resource="User.hbm.xml" />应改为<mapping resource="useradmin/User.hbm.xml" /> 

    另外注意hibernate.cfg.xml文件和User.hbm.xml文件中的”http://hibernate.sourceforge.net/hibernate-mapping-3.1.dtd”,其中3.1要与hibernate的版本一致,我们使用的是hibernate3.1.



IT168技术文档
    5. 测试程序 
    在useradmin包下新建一个Test类,即右键点击useradmin,通过”新建—>类”来建立一个Test类,同时将public static void main(String[] args)这个选项勾上。


    Test类的代码如下:
package useradmin; /* * Copyright (c) 2006,Science and Technology Of NCEPU * All rights reserved. * * FileName:filename * Description:description of the file * * Version:1.0 * Author:gmplayer * FinishDate:2006.9.1 * */ import org.hibernate.*; import org.hibernate.cfg.*; public class Test { public static void main(String[] args) throws Exception { try { SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); user.setUsername("gmplayer"); user.setPassword("admin"); session.save(user); tx.commit(); session.close(); } catch (HibernateException e) { e.printStackTrace(); } } }
    这里简单说说一下流程,首先初始化Configuration,加载Hibernate的配置信息,然后Configuration取得SessionFactory对象,并由它来开启一个Session,它代表对象与表格的一次会话操作,而 Transaction则表示一组会话操作,我们只需要直接操作User对象,并进行Session与Transaction的相关操作, Hibernate就会自动完成对数据库的操作。 

    最后建立完所有的文件以后,文件的结构如图:

    6. 运行程序 
     右键点击Test.java,选择”运行—>运行方式—>Java应用程序”. 
     控制台中最后一行输出为: Hibernate: insert into Users (username, password, id) values (?, ?, ?)表示运行成功.
同时查看数据库中的Users表,发现Users表中已经增加了一条记录,其中username为gmplayer,password为admin.

    7. 小结 
    Hibernate原理方面网上有很多资料,比如Hibernate本身自带的中文文档、夏昕编写的《Hibernate开
发指南》,陈刚编写的《Eclipse插件开发指南》和蔡雪焘编写的《Hibernate开发及整合应用大全》等都是
非常不错的,现在关于Hibetnate的书籍也多了起来。 
    我所作的工作就是要使新手能尽快上手Hibernate,理论方面我不想过多纠缠,尽量以实例说话。我想
,与其凭空说一个技术多好多好,倒不如给我一个可以上手的实例操作一下。

0
相关文章