0
点赞
收藏
分享

微信扫一扫

学习笔记]快速开发Hibernate

樊欢 ​​java​​及开源项目爱好者。


    Blog :​​http://heyay.blogone.net​​    2005-6-13


引言

    关于学习Hibernate的意义,咱不用多说。

        

下载并安装插件

    Hibernate3 

    下载:​​http://hibernate.sourceforge.net​​

    JBossIDE1.5M1 

    下载:​​http://sourceforge.net/projects/jboss/​​

    HibernateSynchronizer3

    下载:​​http://sourceforge.net/projects/hibernatesynch/​​

    My​​sql​​及JDBC开发包 

    下载:​​sql​​.com/downloads/">http://dev.my​​sql​​.com/downloads/


    JBossIDE1.5M1 基于Eclipse的IDE开发工具,你可以通过升级你的Eclipse插件进行升级,不过我升级了很多次都不成功,经常升级到一半就毫无动静,白白浪费了很多时间,所以推荐直接下载JBossIDE。


    HibernateSynchronizer Eclipse的Hibernate插件。可以生成Hibernate的配置​​文件​​和Java代码。不过是基于Hibernate2的。Hibernate2与Hibernate3 的Classs的包由原来的net.sf 移至 org 包内。所以HibernateSynchronizer 生成的Java代码和配置​​文件​​会有错误。我通过对HibernateSynchronizer进行反编译,并进行修改,使之适应于Hibernate3 ,目前使用还未发现问题。要使用我修改后的版本,请与我通过Email(heydaymail@hotmail.com 实在是找不到空间可放)联系。


第一个实例

    一、前期准备

        安装HibernateSynchronizer 插件,并在JBossIDE 透视图里配置好。


        启动My​​sql​​,建表Computer:

[table]

CREATE TABLE `computer` (

  `id` int(11) NOT NULL auto_increment,

  `cpu` varchar(50) default NULL,

  `mainboard` varchar(50) default NULL,

  `displaycard` varchar(50) default NULL,

  `harddisk` varchar(50) default NULL,

  `display` varchar(50) default NULL,

  `memory` varchar(50) default NULL,

  `soundcard` varchar(50) default NULL,

  `cdrom` varchar(50) default NULL,

  `mouse` varchar(50) default NULL,

  `keyboard` varchar(50) default NULL,

  PRIMARY KEY  (`id`)

) ;

[/table]


    二、新建项目

    启动JBossIDE ,新建一个DemoHibernate 项目,导入Hibernate及My​​sql​​ 开发包。如图:


    将Hiberante开发包里的log4j.properties 放至项目根目录下。


    三、Hibernate 配置​​文件​​

        1. 通过JBossIDE Hibernate插件,生成Hibernate.cfg.xml



[table]

<!DOCTYPE hibernate-configuration PUBLIC

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

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

        <property name="hibernate.dialect">

            org.hibernate.dialect.MySQLDialect

        </property>

        <property name="hibernate.connection.url">

            jdbc:my​​sql​​://localhost/hibernate

        </property>

        <property name="hibernate.connection.driver_class">

            org.gjt.mm.my​​sql​​.Driver

        </property>

    </session-factory>

</hibernate-configuration>

[/table]

        2. 通过HibernateSynchronizer 生成Mapping​​文件​​


 

        3. 将Mapping ​​文件​​ 加入 Hiberante.cfg.xml​​文件​​

[table]

<?xml versinotallow="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >


<hibernate-mapping package="my.demo.hibernate">

    <class    name="Computer"

        table="computer"

    >

        <id

            name="Id"

            type="int"

            column="id"

        >

            <generator class="increment"/>

        </id>


        <property

            name="Cpu"

            column="cpu"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Mainboard"

            column="mainboard"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Displaycard"

            column="displaycard"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Harddisk"

            column="harddisk"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Display"

            column="display"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Memory"

            column="memory"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Soundcard"

            column="soundcard"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Cdrom"

            column="cdrom"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Mouse"

            column="mouse"

            type="string"

            not-null="false"

            length="50"

        />

        <property

            name="Keyboard"

            column="keyboard"

            type="string"

            not-null="false"

            length="50"

        />



    </class>    

</hibernate-mapping>

[/table]

    生成的Computer.hbm,中 Id 字段为自增,需要将generator class=”VM”参数改为increment


    将Mapping​​文件​​加入到Hibernate.cfg.xml中




    可以看到Hibernate.cfg.xml中增加一行

[table]

<!DOCTYPE hibernate-configuration PUBLIC

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

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

        <property name="hibernate.dialect">

            org.hibernate.dialect.MySQLDialect

        </property>

        <property name="hibernate.connection.url">

            jdbc:my​​sql​​://localhost/hibernate

        </property>

        <property name="hibernate.connection.driver_class">

            org.gjt.mm.my​​sql​​.Driver

        </property>

        <mapping resource="conf/Computer.hbm" />

    </session-factory>

</hibernate-configuration>

[/table]

四、    生成Java代码

通过HibernateSynchronizer 生成 Hibernate Java代码。



生成的代码结构如图:




五、    编写代码

[table]

package my.demo.hibernate.Sample;


import org.apache.log4j.PropertyConfigurator;

import org.hibernate.SessionFactory;

import org.hibernate.Session;

import org.hibernate.cfg.Configuration;

import my.demo.hibernate.Computer;


public class ComputerCreate {


    /**

     * @param args

     */

    public static void main(String[] args) {

                

        PropertyConfigurator.configure("log4j.properties");

        Configuration cfg = new Configuration();

        cfg.configure();

        SessionFactory sf = cfg.buildSessionFactory();

        Session session = sf.openSession();

        Computer computer = new Computer();

        

        computer.setCpu("on(E) 2.4" );

        computer.setDisplay("LCD" );

        computer.setDisplaycard("intel" );

        computer.setHarddisk("60G" );

        computer.setMainboard("inter" );

        computer.setMemory("512M" );

        computer.setMemory("Agiller" );

        computer.setSoundcard("inter" );

        computer.setKeyboard("inter" );

        computer.setCdrom("cdrom" );

        

        session.save(computer);

        session.flush();

        

        try{

            session.connection().commit();

            session.close();

            System.out.println("success!!!!");

        }catch(Exception e){

            e.printStackTrace();

        }

    }

}

[/table]


总结

    Hibernate 实现O/R Mapping,但配置​​文件​​编写非常麻烦,通过JBossIDE 及HibernateSynchronizer可以快速的帮助我们构建代码,大大提高我们的工作效益。

​​http://www.jdon.com/idea/eclipse-jbossIDE.htm​​

​​http://www.jboss.com/products/jbosside/docs​​

​​http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=122&threadID=27102&messageID=164616​​



举报

相关推荐

0 条评论