[学习笔记]快速开发Hibernate 2005-06-13
樊欢 java及开源项目爱好者。 Email :heydaymail@hotmail.com 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/ Mysql及JDBC开发包 下载:sql.com/downloads/">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: [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及Mysql 开发包。如图:
 将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:mysql://localhost/hibernate </property> <property name="hibernate.connection.driver_class"> org.gjt.mm.mysql.Driver </property> </session-factory> </hibernate-configuration> [/table] 2. 通过HibernateSynchronizer 生成Mapping文件
 3. 将Mapping 文件 加入 Hiberante.cfg.xml文件 [table] <?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> [/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: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> [/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可以快速的帮助我们构建代码,大大提高我们的工作效益。
关于作者 樊欢 java爱好者,您可以通过heydaymail@hotmail.com与我联系。 Email :heydaymail@hotmail.com Blog :http://heyay.blogone.net |
|