您的位置:首页 > 其它

使用Hibernate Synchronizer开发Hibernate应用

2009-09-17 17:24 232 查看
一、简介:

Hibernate
Synchronizer是一个基于Hibernate框架的免费Eclipse代码生成工具插件,可以根据

Hibernate映射文件的变化自动同步生成Java代码。自动生成的Java对象包括抽象的基类和用户可修

改的扩展类,这样在代码在自动同步时,不会影响到用户已经修改的代码。

自动生成的对象包括:

Value Objects

Proxy Interfaces

Composite Key Objects

Enumeration
Objects

Component Objects

Subclasses

DAOs
其他的特性包括:

具有代码提示功能和大纲视图的编辑器

可自定义的模板

可根据数据库新建Hibernate映射文件的向导

新建配置文件向导

添加映射引用、同步文件、激活代码生成等右键菜单操作
在Eclipse中修改Hibernate映射文件后,Hibernate Synchronizer会重写Business
Objects

代码,你也可以在Eclipse外部使用其他编辑器修改影射文件,然后手动运行同步操作。

在Hibernate
Synchronizer重新生成Java对象时,不会删除你编写的代码,这是因为Hibernate

Synchronizer生成的所有对象都是抽象的基类(自动生成的代码),而不会修改扩展类(你编写的

代码)。
二、运行环境:

Windows 2000 Professional

JDK 1.4.2_03

Eclipse
3.1M6

Hibernate 2.1.8

Hibernate Extensions 2.1.3

Hibernate
Synchronizer 2.3.1

MySQL 4.1.10a-nt
三、下载与安装:

1、从http://java.sun.com

下载J2SDK,当前1.4.x系列的最新版本为1.4.2_08

2、从http://www.eclipse.org

下载Eclipse,当前最新版本为3.1正式版,要下载M6版,

Hibernate
Synchronizer的最新版本2.3.1和Eclipse3.1正式版冲突

3、从http://www.hibernate.org/

下载Hibernate和Hibernate
Extensions,Hibernate

目前分为2.x和3.x两个系列,最新版本分别为2.1.8和3.0.5。Hibernate
Extensions当前最新

版本为2.1.3

4、从http://www.mysql.com

下载MySQL数据库,4.x系列的最新版本是4.1.12a

5、MySQL、JDK、Eclipse的安装请参考相关资料

6、安装Hibernate Synchronizer:

在Eclipse3.1中,Help->Software Updates->Find and Install…

在对话框Install/Update中,选择Searche for new features to install,

点击Next,点击“New
Remote Site…”按钮,在New Update Site对话框中的Name输入

Hibernate Synchronizer update
site,在URL中输入http://www.binamics.com/hibernatesync



点击OK,确认Hibernate
Synchronizer update site被选中,点击Finish

在完成Searching之后,点击选中Hibernate
Synchronizer update site前面的复选

框,点击Next,选中I accept
…,点击Next,点击Finish,在下载完成后,重起Eclipse

即安装成功
四、新建项目

1、在Eclipse中新建一个Java项目HibernateSyncTest,源代码目录修改为为src,输出

目录修改为为classes,在项目文件夹中新建lib目录

2、将下载的hibernate-2.1.8.zip压缩包中的lib目录下

所有jar文件解压缩到lib目录中,将压缩包中的hibernate2.jar解压缩到lib目录中

3、将下载的hibernate-extensions-2.1.3.zip压缩包中的lib目录下面的所有jar解压缩

到lib目录中,将压缩包中的hibernate-tools.jar解压缩到lib目录中

4、复制数据库驱动程序到lib目录中,如MySQL的数据库驱动mysql-connector-java-3.1.8-bin.jar

5、将lib目录下的所有jar文件添加到Build Path中

6、在src目录下新建Log4j的配置文件log4j.properties,请参考相关资料。
五、新建数据库

1、执行下面的SQL脚本,建立数据库:

CREATE DATABASE hibernate_test;

2、执行下面的SQL脚本,建立数据库表:

CREATE TABLE `person` (

`id` int(8) NOT NULL
auto_increment,

`firstName` varchar(20) default NULL,

`lastName`
varchar(20) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB
DEFAULT CHARSET=utf8;

INSERT INTO `person` values (1,’Vinton’,'Lee’);
六、实战Hibernate Synchronizer

1、创建Hibernate配置文件:

在Eclipse中执行如下操作:File->New->Other->Hibernate->Configuration
File,

进入新建Hibernate配置文件向导

在Hibernate Configuration
File对话框中,进行如下修改:

Container=/HibernateSyncTest/src

Database
Type=MySQL

Driver=com.mysql.jdbc.Driver

Database
URL=jdbc:mysql://localhost/hibernate_test

Username=yourusername

Password=yourpassword

其余项使用默认值,不需修改。点击Finish。

打开src,可以看到已经生成hibernate.cfg.xml

2、创建Hibernate映射文件:

在Eclipse中执行如下操作:File->-New->Other->Hibernate->Mapping File

可以看到已经在hibernate.cfg.xml中配置的数据库连接信息,输入密码后,点击Refresh

,如果配置正确,可以看到之前新建的数据库表person,选中person,修改Container,如:

/HibernateSyncTest/srcmoonsky/hibernate/model

指定Pachage,如moonsky.hibernate.model,点击Finish。

打开src,可以看到在包moonsky.hibernate.model已经生成了Person.hmb.xml,而且有

一个警告,警告的内容是You
should synchronize this file after viewing the

contents.做得太好了,Perfect。

3、(此步骤不需要做)添加映射文件应用到配置文件中:

右击Person.hmb.xml,Hibernate Synchronizer->Add
Mapping Reference,将映射文件

引用添加到配置文件中。

4、同步生成Java文件:

右击Person.hmb.xml,Hibernate Synchronizer->Synchronize
Files,同步文件,完成

后,可以看到在生成了下面一些类:

moonsky.hibernate.model.Person

moonsky.hibernate.model.base._BaseRootDAO

moonsky.hibernate.model.base.BasePerson

moonsky.hibernate.model.base.BasePersonDAO

moonsky.hibernate.model.dao._RootDAO

moonsky.hibernate.model.dao.PersonDAO

5、写测试代码:

package
test.moonsky.hibernate;
import java.util.List;
import net.sf.hibernate.HibernateException;
import moonsky.hibernate.model.dao.PersonDAO;

import
moonsky.hibernate.model.dao._RootDAO;

import junit.framework.TestCase;
public class PersonTest extends TestCase {

PersonDAO dao = null;
protected void setUp() throws Exception
{

super.setUp();

//load the configuration
file

_RootDAO.initialize();

dao = new
PersonDAO();

}

public void testFindAll() {

List people =
null;

// find all person

try {

people =
dao.findAll();

} catch (HibernateException e)
{

e.printStackTrace();

}

&n

bsp;assertNotNull(people);

}
protected void tearDown() throws Exception
{

super.tearDown();

}

}

运行测试代码,解决出现的问题,直到看到JUnit测试成功。
注:生成的hibernate.cfg.xml中的hibernate.transaction.factory_class为

net.sf.hibernate.transaction.JTATransactionFactory,在save()操作时出错,找不到

JNDI,错误原因还在查找,如果修改为net.sf.hibernate.transaction.JDBCTransactionFactory,

可以解决这个问题。需要考虑一下Hibernate
Synchronizer为什么默认使用

JTATransactionFactory呢?
附:参考资料

Hibernate Synchronizer官方网站:http://www.binamics.com/hibernatesync

Hibernate官方网站:http://www.hibernate.org
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: