服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

在myeclipse快速搭建hibernate应用

  我们所要建的应用非常简单,只是利用hibernate3.0对一张表进行操作。
  软件环境:
   1.eclipse3.1.2;
   2.myeclipse4.1.0;
   3.mysql server 5.0 ;
   4.mysql java connector j 5.0.4; 
   5.hibernate3.0 core libraries;
   6.hibernate3.0 advanced libraries;
   参考书籍及文档:
   <<深入浅出hibernate>>夏昕,唐勇,曹晓刚
   myeclipse help content

   整个应用的创建依以下步骤完成:
   (1)新建一个名为hibernatetest的mysql schema;

   (2)创建一张名为user的表格,其语句如下:
        create table `hibernatetest`.`user` (
            `id` integer unsigned not null auto_increment,
            `name` varchar(45) not null,
            `sex` char not null,
            `age` tinyint unsigned not null,
             primary key (`id`)
        )
        engine = innodb;    

   (3)打开myeclipse的db browser视图,在右击选项菜单(context menu)上选择new...,弹出database 

profile对话框,用于新建一个profile,填入以下信息:
       <3.1>profile name: localhost_mysql_profile;
       <3.2>driver: 打开configure database driver链接,配置jdbc驱动,我们只需加入mysql 

connector j的jdbc驱动即可;
       <3.3>url: jdbc: mysql://127.0.0.1:3306/hibernatetest;
       <3.4>user name: 用户名;
       <3.5>password: 密码;
       创建完profile后,尝试一下连接至数据库,成功即可;

   (4)在eclipse中新建一个名为hibernatesample的java项目;
       <4.1>创建一个名为config的目录,用于放置hibernate.cfg.xml;
       <4.2>创建一个名为mappings的目录,用于放置映射文件;
   
   (5)在hibernatesample项目的右击选项菜单中,选择myeclipse->add hibernate capabilities...这

样会弹出一个hibernate support for myeclipse的对话框:
       <5.1>第一步是选择要添加到工程的包,我们把hibernate3.0的core及advanced包都勾上;
       <5.2>第二步是否创建hibernate.cfg.xml,我们把configuration folder设定为src/config;
       <5.3>第三步是指定数据库连接细节(specify database connection details),我们只需名为

localhost_mysql_profile即可,因为我们之前已经进行了设置;
       <5.4>第四步问你是否创建sessionfactory,这个sessionfactory其实是hibernate提供的一个用于

管理session的类,它可以确保在每个独立的线程中session是唯一的,我们创建名为

cn.com.test.hibernatesample.factory.hibernatesessionfactory的类;
       通过上述的四步,现在的工程里面已经拥有了hibernate所需的包及配置文件。
   
    
   (6)在src目录下创建一个名为log4j.properties的文件,内容如下:
    ### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.consoleappender
    log4j.appender.stdout.target=system.out
    log4j.appender.stdout.layout=org.apache.log4j.patternlayout
    log4j.appender.stdout.layout.conversionpattern=%d{absolute} %5p %c{1}:%l - %m%n

    log4j.rootlogger=warn, stdout
    log4j.logger.org.hibernate=error
        因为hibernate是通过log4j进行日志管理的,所以加上这个会比较好,不加会在运行时出错。

   (7)创建cn.com.test.hibernatesample.model.user类,篇幅所限,大致如下
        -------------------------------------------------------------------------
        package cn.com.test.hibernatesample.model;
        public class user {

          private integer id;
        private string name;
        private char sex;
        private byte age;

            //后面是一堆的setter,getter,用于set及get各个属性
 
       }
       ------------------------------------------------------------------------------

    (8)在工程的mappings(在第4步创建的目录)目录下创建一个名为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="cn.com.test.hibernatesample.model.user" table="user">

              <id name="id" column="id" type="integer" >
                <generator class="increment"/>
          </id>
          <property name="name" column="name" type="string" />
              <property name="sex" column="sex" type="char"/>
              <property name="age" column="age" type="byte"/>
           </class>
        </hibernate-mapping>

    (9)在hibernatesample项目的右击选项菜单中,选择new -> junit test case...,弹出新建junit 

test case的对话框:
        <9.1>package上输入:cn.com.test.hibernatesample.test;
        <9.2>type上输入usertest;
        <9.3>在which method stubs whould you like to create中勾上setup(),teardown();
        整个usertest类的代码如下:

    
        ---------------------------------------------------------------------------------
    package cn.com.test.hibernatesample.test;

    import org.hibernate.hibernateexception;
    import org.hibernate.session;
    import org.hibernate.transaction;

    import cn.com.test.hibernatesample.factory.hibernatesessionfactory;
    import cn.com.test.hibernatesample.model.user;

    import junit.framework.assert;
    import junit.framework.testcase;

    public class usertest extends testcase {

        //hibenate的session对象
        private session session = null;
    
        protected void setup() throws exception {
            super.setup();
            session = hibernatesessionfactory.currentsession();
        }
    
        public void testuserinsert() {
            transaction tran = null;
            try {
                tran = session.begintransaction();
                user user = new user();
                user.setname("suhaoyuan");
                user.setsex('m');
                user.setage(byte.parsebyte("27"));
                session.save(user);
                tran.commit();
                assert.assertequals(.getid().intvalue() > 0, true);
            }
            catch(hibernateexception ex) {
                ex.printstacktrace();
                assert.fail(ex.getmessage());
                if(tran != null) {
                    try {
                      tran.rollback();
                    }
                    catch(hibernateexception tranex) {
                        tranex.printstacktrace();
                    }
                }
            }
        }

        protected void teardown() throws exception {
            super.teardown();
            hibernatesessionfactory.closesession();
        }

    }
        ----------------------------------------------------------------------------

        (10)运行刚创建的usertest测试用例即完成该应用;

                                                                         suhaoyuan
                                                                         2007.03.15

扫描关注微信公众号