[学习笔记] 快速开发Hibernate

樊欢 java及开源项目爱好者。
    Email :heydaymail@hotmail.com
    Blog :http://heyday.blogone.net
    2005-6-13

引言
    关于学习Hibernate的意义,咱不用多说。
  
下载并安装插件
    Hibernate3
    下载:http://hibernate.sourceforge.net
    JBossIDE1.5M1
    下载:http://sourceforge.net/projects/jboss/
    HibernateSynchronizer3
    下载:http://sourceforge.net/projects/hibernatesynch/
    Mysql及JDBC开发包
    下载:http://dev.mysql.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 透视图里配置好。

        启动Mysql,建表Computer:

 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`)
) ;

    二、新建项目
 启动JBossIDE ,新建一个DemoHibernate 项目,导入Hibernate及Mysql 开发包。如图:
[img]http://images.blogcn.com/2005/6/13/8/heyday,2005061315445.jpg[/img]
 将Hiberante开发包里的log4j.properties 放至项目根目录下。

    三、Hibernate 配置文件
        1. 通过JBossIDE Hibernate插件,生成Hibernate.cfg.xml

 
<!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:mysql://localhost/hibernate
  </property>
  <property name="hibernate.connection.driver_class">
   org.gjt.mm.mysql.Driver
  </property>
 </session-factory>
</hibernate-configuration>

        2. 通过HibernateSynchronizer 生成Mapping文件

 
        3. 将Mapping 文件 加入 Hiberante.cfg.xml文件
 <?xml version="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
>


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

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


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

 
<!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:mysql://localhost/hibernate
  </property>
  <property name="hibernate.connection.driver_class">
   org.gjt.mm.mysql.Driver
  </property>
  <mapping resource="conf/Computer.hbm" />
 </session-factory>
</hibernate-configuration>

四、 生成Java代码
通过HibernateSynchronizer 生成 Hibernate Java代码。

生成的代码结构如图:


[B]五、 编写代码[/B]

 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();
  }
 }
}

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

关于作者
    樊欢 java爱好者,您可以通过heydaymail@hotmail.com与我联系。
    Email :heydaymail@hotmail.com
    Blog :http://heyday.blogone.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值