科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在Eclipse中使用Hibernate3

在Eclipse中使用Hibernate3

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 最近,我开始使用Eclipse作为我的开发环境。这部分是由于它支持我开发时所使用的许多平台,部分是由于Eclipse是开放的可扩展环境的杰出代表,大家都可以为它的发展贡献自己的力量。我正开始调查人们已经提出的一些扩展。

作者:James Elliott 来源:IT专家网 2008年6月2日

关键字: Hibernate 使用 Eclipse java

  • 评论
  • 分享微博
  • 分享邮件
填写Driver Class时有一点奇怪:需要单击Browse按钮,并开始输入驱动程序的类名。如果输入“jdbcD”,窗口将只会给出两个选择,很容易就可以找出正确的选择,如图15所示。

  图15. 指定HSQLDB驱动程序类

  按照图14所示设置适用于您自己的安装的值之后,就可以单击Finish来创建配置文件。Hibernate Synchronizer现在已经可以使用了。它打开了创建的文件,所以可以看到一个Hibernate的XML配置文件的结构和详细信息。

  图16. 生成的配置文件

  一种快速测试该配置是否生效的方式是使用其他的向导界面。选择File -> New -> Other,单击新可用的Hibernate类别,选中Hibernate Mapping File,然后单击Next。当向导出现时,它应该填充了刚才输入的所有设置信息,可以单击Refresh按钮来确定它可以与数据库通信,它还会显示找到了一个TRACK表。第一次这样做的时候,由于某种原因,您可能必须确认包含HSQLDB驱动程序的.jar文件的位置,但是这种情况只会发生一次。不管怎样,确认了一切正常之后,单击Cancel,而不是实际创建映射,因为我们想使用手动创建的已有映射文件。

  生成代码

  这很可能是您一直期待的部分。我们可以做些什么特别的呢?马上就有一个可用于Hibernate映射文档的新上下文菜单项。

  如果右击(或控制单击)任意一项,将会看到很多与Hibernate相关的选项(图17),其中包括一个同步选项。这是一种手动让Hibernate Synchronizer生成与映射文档相关的数据访问对象的方式。

  图17.映射文档的同步选项

Add Mapping Reference选项也很有用:它在主Hibernate配置文件中添加了一项,告知有关该映射文档的信息,所以无需在源代码中加入任何内容来要求配置相应的映射。现在我们来看看选择Synchronize Files的结果。

  到这里事情开始变得有趣了。出现了两个新的子包,一个用于Hibernate Synchronizer“拥有的”“基”数据访问对象,可以在任何时候进行改写,而另一个用于为这些DAO生成子类的业务对象,它不会被重写,这为我们提供了一个向数据类添加业务逻辑的机会(如图18所示)。

  图18. 经过同步的数据访问对象,显示了可编辑的子类

  这样生成的类比使用常规的Hibernate代码生成工具生成的类要多很多,这有一些优点以及一些潜在的缺点,在稍后的权衡部分中我们将讨论这些。还要注意,可以在项目的属性配置中选择生成其中的哪些类,以及生成它们的包结构。我本来应该演示一下的,但是当前的插件版本有一个bug,它阻止了在Mac OS X上对这个配置界面进行访问。补丁已经开发出来了,但尚未发布。

  基于Hibernate Synchronizer页面上的例子与下面的类,我试图使用这些新的数据访问对象插入一些数据到音乐数据库中。这十分类似于使用标准Hibernate代码生成器的版本(在Hibernate: A Developer's Notebook一书的39-40页),甚至更为简单,因为Hibernate Synchronizer生成的类针对每项数据库操作都创建并提交了一个新事务,所以在像这样简单的场境中,您不需要编写代码来设置事务。(当然了,要让一组操作作为单个事务运行,有很多种方法。)下面是新版本的代码:

package com.oreilly.hh;

import java.sql.Time;
import java.util.Date;
import net.sf.hibernate.HibernateException;
import com.oreilly.hh.dao.TrackDAO;
import com.oreilly.hh.dao._RootDAO;

/**
 * Try creating some data using the Hibernate Synchronizer approach.
 */
public class CreateTest2 {

    public static void main(String[] args) throws HibernateException {
        // Load the configuration file
        _RootDAO.initialize();
       
        // Create some sample data
        TrackDAO dao = new TrackDAO();
        Track track = new Track("Russian Trance", "vol2/album610/track02.mp3",
            Time.valueOf("00:03:30"), new Date(), (short)0);
        dao.save(track);
       
        track = new Track("Video Killed the Radio Star",
            "vol2/album611/track12.mp3", Time.valueOf("00:03:49"), new Date(),
            (short)0);
        dao.save(track);
       
        // We don't even need a track variable, of course:
        dao.save(new Track("Gravity's Angel", "/vol2/album175/track03.mp3",
            Time.valueOf("00:06:06"), new Date(), (short)0));
    }
}

  当我编写这些代码时,可以使用Eclipse是一件十分惬意的事情。我已经忘了当我为书籍编写例子时,我多么希望可以使用智能代码完成功能,而且JDT在其他方面也同样能帮上忙。

  为了在Eclipse中运行这个简单的程序,我们需要设置一个新的Run配置。选择Run -> Run...,把CreateTest2.java作为当前的活动编辑器文件。单击New,Eclipse就会知道我们想要在当前项目中运行这个类,因为我们使用main()方法创建它。它指定的默认名称是CreateTest2。界面应该如图19所示。单击Run,试着创建一些数据。

  图19.准备好在Eclipse中运行我们的创建测试

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章