MiddleGen for Hibernate加上Hibernate_Extension工具包,其实就是用来方便我们从先有的数据库导出表结构,生成对应的hbm、cfg文件与POJO类代码。MiddleGenIDE则是MiddleGen的Eclipse插件。整套东西已经有很久没有更新过了。所以虽然本座现在用的eclipse版本3.1.x也能与这个插件正常配合,但是它没有提供在线update的功能。需要你先下载middlegenide_1.3.3.zip,安装插件之后重启Eclipse。如果新开启的eclipse没有变化,估计你得用“- clean”参数再重启一下,或者去删除configuration文件夹下面对应的文件。
OK,下面讲讲怎么去用。首先当然要搭建一个环境(本座现在把MySQL更新到了5.0,Hibernate和当时一样是2.1),然后我们建一个表,装一点数据。MySQL下面建表的脚本如下:
DROP TABLE IF EXISTS `test`.`t_user`;
CREATE TABLE `test`.`t_user` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;有了表之后,建立一个Java工程。然后在Src文件夹上面右键,选择“New-Other”

然后会弹出Middelgen Biuld File的选项。因为MiddleGen是一个使用Ant编译文件来调出IDE的包,所以这个插件实际上就是方便我们用完型填空的方式来编写这个Biuld File而已。

点击后出现下面的界面,对应的内容一目了然,按照自己的需要填写即可。

下面这张图是填好后的样子。和本座一样没有使用Hibernate 3的朋友,注意在画了红圈的Option选项中把hibernate的版本调低。不然生产的配置文件,会有一个非常诡异的“xml parser无法解析dtd”的错误。

填好所有的东西就点击Next进入MiddleGen界面,几乎不用改任何东西直接点击Generate就能得到配置文件和POJO类了。

另外,如果你需要在MiddleGen中生成的POJO直接带Xdoclet的标记的话,需要在找到它自带的模板文件:
eclipse\plugins\org.ultimania.middlegenide_1.3.2
\resource\template\build-hibernate.xml.vm然后把下面这行生成xdoclet tag的值改成true。
<property name="gen.xdoclet-tag" value="true" />最后我们写一个典型的TestCase来测试一下生成的POJO和配置文件。
/*----------------------------
*************** ◎Done by lenciel ******************
*************** 尘世间一个渴望答辩的猥琐男************
-------------------------------------------------------*/
package org.lenciel.test;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;
import junit.framework.Assert;
import junit.framework.TestCase;
/*
* 编写日期 2006-7-23
*/
public class HibernateTest extends TestCase {
Session session = null;
protected void setUp(){
try {
SessionFactory sf = new Configuration().configure()
.buildSessionFactory();
session = sf.openSession();
}catch (HibernateException e) {
e.printStackTrace();
}
}
protected void tearDown(){
try {
session.close();
}catch (HibernateException e) {
e.printStackTrace();
}
}
public void testInsert(){
Transaction tran = null;
try {
tran = session.beginTransaction();
TUser user = new TUser();
user.setName("Emma");
session.save(user);
session.flush();
tran.commit();
Assert.assertEquals(user.getId().intValue()>0,true);
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
if (tran!=null) {
try {
tran.rollback();
}catch (HibernateException e1) {
e1.printStackTrace();
}
}
}
}
public void testSelect() {
String hql= "from TUser where name='Emma'";
try {
List userList = session.createQuery(hql).list();
TUser user = (TUser)userList.get(0);
Assert.assertEquals(user.getName(),"Emma");
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
}
延伸阅读:搭建Hibernate工作环境 - click
安装Eclipse插件 -click


6 Comments
Jump to comment form | comments rss [?] | trackback uri [?]