Archive for 七月, 2006

七夕

星期一, 七月 31st, 2006
     其实不是一个好日子。

     不是一个结婚的好日子。秦代非著名《日书》对这天的评价是,“戊申、巳酉,牵牛以取织女而不果,不出三岁,弃若亡”。

     不是一个约会的好日子。牛郎织女苦等一年,见面后去排队喝咖啡吃泰国菜?去杭百银泰生猛血拼?西湖里面泛舟暴晒?九溪十八弯拖手暴走?不会,他们在十五秒钟内就会脱得精光隐入绿化带中翻云覆雨的。

     我对着自己刚刚画完的UML图的时候在想:兄弟,写个论文而已,不用把自己前面做的东西都推翻了重来吧?

     外面的天气真热,人生是不是应该远离认真思考?

     不然你会和本座一样,想着金刚要不是打飞机打到挂掉,那么这砣七夕节地球的某个角落,将会多么的不堪入目。

     最后,祝天下的善男信女俊男靓女型男索女包括有真感情的狗男女今天都快乐安康高潮迭起和明天善男信女俊男靓女型男索女继续快乐安康高潮迭起。

     珍惜生命,远离发散。
    

昨日搜刮

星期六, 七月 29th, 2006

音乐事故

星期四, 七月 27th, 2006
     本座认为,比大碗还大的碗,叫做海碗。

     比大量还大的量,叫做海量。

     所以比大屁股还大的屁股,叫做海臀。

     没办法,理工科的嘛,发散思维。

     昨天晚上,身边人看过DH之后兴奋异常,放声高歌。一曲嚎罢,还用高频振荡的声音结尾,然后睁着那双水汪汪偏泪汪汪的汪汪大眼问本座:

     “豪猪哥哥,偶像派的这砣海豚音是不是多好听哇?”

     本座当时又发散鸟,严肃滴安慰鸟她:

    “不会啊,你这么苗条。怎么可能发出海臀音呢?”

  

昨日搜刮

星期四, 七月 27th, 2006

昨日搜刮

星期二, 七月 25th, 2006

Eclipse下MiddelGen的使用

星期二, 七月 25th, 2006
     最近有朋友发信,说MiddlegenIDE的主页出了点状况,登陆上去显示的内容莫名其妙,给新手使用MiddlegenIDE带来了困难。本座去看了一下,果然是莫名其妙得厉害。下面总结一个MiddlegenIDE的使用教程吧。

     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