使用Hibernate Synchronizer开发Hibernate应用

来源:互联网 发布:大数据100a净值 编辑:程序博客网 时间:2024/05/01 23:43

 

一、简介:
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
原创粉丝点击