在Eclipse中使用Hibernate插件(二)

eclipse 集成 hibernate插件 在使用eclipse做开发的时候,因为eclipse本身并没有集成像hibernate,spring等工具,所以创建hibernate.cfg.xml,applicationContext.xml这些文件的时候,我们只能选择创建一个普通的xml文件,而且编写时也没有代码提示,对开发速度带来了不便,所以这里说一下eclipse集成hibernate插件的方法。 第一种方法:在线安装 1. 在安装 阅读详情

生成代码
  这可能是你一直在等待的部分。我们能用这个插件来做什么?好,马上就开始。为Hibernate影射文档提供一个新的菜单条目。
  右击(如果是单键鼠标,在按住Control键的同时点鼠标键)一个影射文档,菜单条目中会显示几个和Hibernate相关的选择(如图17所示),其中有一个和synchronize有关,这是一个手工方法,可以让Hibernate Synchronizer产生和该影射文档相对应的数据访问对象。

image
图17 Synchronizer插件为影射文档提供的几个菜单项

  Add Mapping Reference 选项也很有用,当你单击该项时,会把相应的影射文件增加到Hibernate配置文件中,表明该文件是影射文档,因此你不需要在源代码中增加任何信息要求相应的影射文件进行设置。现在让我们看看选取Synchronize Files后的结果。
  事情开始变得有趣,出现了两个子包,一个是“base”的DAO,Hibernate Synchronizer所有,可以在任何时候重写,一个是继承那些DAO类的商业对象,不会被覆盖,也就给了我们一个机会,可以在其中加入商业逻辑(具体如图18中所示)。

image
图18 同步后的DAO,图中显示的是我们可以编辑的子类

  和Hibernate的代码生成工具相比,用该插件生成了更多的类。这是优点,也可能是一些潜在的缺点,将在Trade-Offs 部分进行讨论。你可以在工程配置文件中选取要生成的类和它们所在的包的结构。我可以证明这点,但现在的发行版有个bug ,,无法访问Mac OS X上的配置界面。针对该bug的一个补丁已经做好了,但仍没有发布。
  基于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中运行这个简单的程序,需要设置一个新的运行配置。用CreateTest2.java作为当前文件,选择运行(Run )-> 运行...(Run...)。然后单击新建(New),因为该类有一个main() 方法,Eclipse推断出要运行该工程的当前类。Eclipse为新的运行配置取的名字,CreateTest2,很合适。屏幕窗口看起来如图19中所示,单击运行来在数据库中创建一些数据。

image
图19 准备在Eclipse中运行创建数据的测试程序

  如果你确实按照上边说的来做,你会发现第一次的尝试运行失败。Hibernate抱怨配置文件中连一个映射文件都没有参考,为了运行程序,至少需要一个这样的文件。这也是为什么XMLBuddy在图16底部用黄色下划线发出警告。可以很容易修改该错误,你只要在包资源浏览器(Package Explorer)中的Track.hbm.xml这个影射文档上单击右键,在Hibernate Synchronizer子菜单中选取Add Mapping Reference(如图17中所示),这样XMLBuddy就不会再抱怨XML文件有错误,程序也可以继续向前。不幸的是,没有向前推进我们所愿的那样远,下一个问题又出来了。Eclipse中显示的下一个错误是“不能在JNDI中找到JTA UserTransaction initial context”。不止我一个人犯这种错误,因为在a forum thread中有这样的讨论,而且到目前为止仍然没有找到一个解决方法。
  既然我知道不需要使用JTA,我倒是很想知道为什么Hibernate竟然会使用JTA?打开Hibernate配置文件,如图16所示,看看是不是 Hibernate Synchronizer在其中加入了可疑的内容。看了配置文件后,可以确定,有一些行看起来是罪魁祸首:

 <property name="hibernate.transaction.factory_class"> 
       net.sf.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">
       java:comp/UserTransaction
</property>

  一旦把那些行变成注释后,再次运行程序。这次,也就是第三次运行成功。我在自己计算机上运行没有一点错误,数据已经保存到数据库中。运行 ant db 这个target(在Developer's Notebook一书的第一章有相应的解释)可以把表中所有的数据显示出来(不可否认,这也许有点简单),如图20中所示。如果你跟着这篇文章中顺序来做的,而不是跟着书中步骤一步一步来的,你需要先运行ant schema来创建数据库中的表,或是删除以前试验留下的数据。

image
图20 在Eclipse中运行Ant

  你可以在Eclipse内运行Ant的target,方法是用右键单击包资源浏览器(Package Explorer)中的build.xml 文件,选择菜单中的运行Ant(Run Ant),然后在弹出对话框中选择你要运行的target,如图21所示。这个功能很cool。

image
图21 在Eclipse中运行Ant

  查询数据相当简单、直白,即使Hibernate Synchronizer产生了很多辅助方法来使用指定查询,我认为这些没有什么用处,都是运行查询,然后返回包含结果的列表,而不是返回一个Query 对象,让你直接使用该对象。这使你不能使用任何Query提供的、方便的、类型安全(type-safe)的参数设置方法,因为这个,我打算让 _RootDAO对象提供一个Session对象,可以用“老式”的方法来使用Hibernate。公平来说,我认为如果编辑Hibernate Synchronizer 用来生成代码所使用的模板,就可以生成想要的任何方法,如果有一个项目,要用到该插件,可以肯定我会试着这么做。
  实际上,进一步考虑,当你得到一个活动的Session时,你只能使用Query,而这些DAO对象已经提供为相应功能最佳的实现。如果你和我在例子中使用查询的方法一样,那就需要你自己来实现session管理。你能够把session管理内嵌于你自己所写的那一半DAO中,这样可以给你提供两方面的好处。(译者注:和有base的java POJO对象一样,对于DAO,该插件也生成一对类,一个base DAO给该插件用,一个是继承该base DAO的自定义DAO,你可以在其中添加商业逻辑)。这也是Hibernate Synchronizer把类分隔开来如此有用的另一个原因。对该插件的远见在下边做了一点研究
  不管怎么说,下边是我第一次使用的代码,和书中48-49页上的代码功能基本一致:

package com.oreilly.hh;

import java.sql.Time;
import java.util.ListIterator;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;

import com.oreilly.hh.dao.TrackDAO;
import com.oreilly.hh.dao._RootDAO;

/**
* Use Hibernate Synchronizer's DAOs to run a query
*/
public class QueryTest3 {

    public static void main(String[] args) throws HibernateException {
        // Load the configuration file and get a session
        _RootDAO.initialize();
        Session session = _RootDAO.createSession();

        try {
            // Print the tracks that will fit in five minutes
            Query query = session.getNamedQuery(
                TrackDAO.QUERY_COM_OREILLY_HH_TRACKS_NO_LONGER_THAN);
            query.setTime("length", Time.valueOf("00:05:00"));
            for (ListIterator iter = query.list().listIterator() ;
                 iter.hasNext() ; ) {
                Track aTrack = (Track)iter.next();
                System.out.println("Track: /"" + aTrack.getTitle() +
                                   "/", " + aTrack.getPlayTime());
            }
        } finally {
            // No matter what, close the session
            session.close();
        }
    }
}

  TrackDAO为我们提供了一个很好的功能:静态常数,使用这个功能,可以用来进行指定查询(named query),这就消除了由于输入问题而导致运行时错误的任何机会。我欣赏这个功能。为该测试类设定运行配置,然后运行,输出结果正和我想的一样,如图 22所示。

image
图22 Eclipse控制台窗口显示的查询结果

  如上所述,这个类运行后,借助于Hibernate Synchronizer提供的模型,我想到有一个更好的方法可以实现这个功能。把查询放到TrackDAO中去,这里才是查询方法真正属于的地方,指定查询(named query)是和该DAO关联的映射文件的一个功能。

package com.oreilly.hh.dao;

import java.sql.Time;
import java.util.List;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;

import com.oreilly.hh.base.BaseTrackDAO;

/**
* This class has been automatically generated by Hibernate Synchronizer.
* For more information or documentation, visit The Hibernate Synchronizer page
* at http://www.binamics.com/hibernatesync or contact Joe Hudson at joe@binamics.com.
*
* This is the object class that relates to the TRACK table.
* Any customizations belong here.
*/
public class TrackDAO extends BaseTrackDAO {

    // Return the tracks that fit within a particular length of time
    public static List getTracksNoLongerThan(Time time)
        throws HibernateException
    {
        Session session = _RootDAO.createSession();
        try {
            // Print the tracks that will fit in five minutes
            Query query = session.getNamedQuery(
                QUERY_COM_OREILLY_HH_TRACKS_NO_LONGER_THAN);
            query.setTime("length", time);
            return query.list();
        } finally {
            // No matter what, close the session
            session.close();
        }
    }
}

  以上代码,看起来更好(nice)、更为清晰(clean),QueryTest3中的main()方法更是得到了大大简化

    public static void main(String[] args) throws HibernateException {
        // Load the configuration file and get a session
        _RootDAO.initialize();

        // Print the tracks that fit in five minutes
        List tracks = TrackDAO.getTracksNoLongerThan(Time.valueOf("00:05:00"));
        for (ListIterator iter = tracks.listIterator() ;
             iter.hasNext() ; ) {
            Track aTrack = (Track)iter.next();
            System.out.println("Track: /"" + aTrack.getTitle() +
                               "/", " + aTrack.getPlayTime());
        }
    }

  很清楚,这是在Hibernate Synchronizer中用到指定查询(named query)时所应采取的方法。很快测试一下就可以证实以上的代码输出同样的结果,而且这里的代码更好。

hibernate插件 eclipse安装使用,安装方法简单 立即下载

相关推荐

HibernateTools-逆向工程支持中文(Eclipse插件)

使用Hibernate逆向工程时,若数据库中有中文注释,会出现乱码,本压缩包中对其进行了修改,使其支持中文。主要修改的文件为:\plugins\org.hibernate.eclipse_3.2.4.Beta1-R200810311334\lib\tools\hibernate-tools.jar

在Eclipse中使用Hibernate

  最近,我开始使用Eclipse作为我的开发环境。这部分是由于它支持我开发时所使用的许多平台,部分是由于Eclipse是开放的可扩展环境的杰出代表,大家都可以为它的发展贡献自己的力量。我正开始调查人们已经提出的一些扩展。例如,我使用了一个叫做XMLBuddy的小插件来处理XML文件,它很有用。所以,我开始好奇是否有人已经编写了使用Hibernate的插件,最近在编写Developers Not

键者天行 1万+

Hibernate_Tools_for_Eclipse插件的安装和使用

Hibernate_Tools_for_Eclipse插件的安装和使用

Eclipse使用使用hibernate插件将数据库表生成对应的java类以及映射配置文件

Eclipse使用使用hibernate插件将数据库表生成对应的java类以及映射配置文件

jingde528的博客 813

Eclipse插件(hbm转换工具,属性文件编辑插件)

Eclipse插件(hbm转换工具,属性文件编辑插件)

在Eclipse中使用Hibernate插件

介绍  最近我开始使用Eclipse作为我的开发环境,部分原因是因为在我进行开发的许多平台上都可以使用Eclipse来工作,还有部分原因是因为Eclipse是展示人人皆可作出贡献的开放、可扩展环境的优势的一个极好的例子。我开始研究其他人提供的对Eclipse的扩展。例如,当用到xml文件时,我使用XMLBuddy插件。该插件对于我的工作很有助益。因为最近一直在写Developer'sNotebook,所以我很想知道是不是已经有人写了关于Hibernate的插件,事实上,有好几个这样的插件正在开发。在这篇文章中,我们将探索其中之一:HibernateSynchronizer.  Hibernat

Eclipse 安装 Hibernate插件以及使用

转自 http://www.cnblogs.com/anstoner/p/7509175.html 目录 Eclipse juno 中安装 JBoss Tools,集成Hibernate 一.Help-&gt;Install New Software中安装 二.在Eclipse Markeptplace中找到相应的版本 三.离线安装 四.选择...

weixin_39214481的博客 697

mongoDB 数据莫名其妙的没了

问题 之前没有接触过mongoDB,然后接手一个项目使用的是MongoDB,我就跟着网上的教程搭建一个MongoDB的服务,并运行起来。 一开始没有啥问题,成功的把服务与MongoDB都启动以来,运行也没有问题。但是过了几天,我再次打开时发现,以前的数据神奇的消失了。我还在想,是有什么定时清除的么,还是什么原因导致崩了然后数据就被清理了。 查找原因 第一次遇到我没有在意,重启了一下MongoDB,...

技术熊的博客小窝 1万+

如何在Eclipse中使用Hibernate框架

版本信息: Hibernate:5.8.0 MySQL:8.0.21 项目结构: 步骤: 1.导入相关jar包 解压缩hibernate压缩包之后,相关jar包目录如下 除此之外还需要导入的jar包 连接MySQL的jar包 javaee-api-7.0.jar 2.创建相关配置文件 1).实体类映射文件User.hbm.xml 文件名不固定,可以随便命名,位置固定 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-

SmallSweets的博客 1528

为什么你的SiC MOSFET仿真不准?可能是离子注入的‘沟道效应’在捣鬼(Silvaco BCA模块详解)

本文深入分析了SiC MOSFET仿真中离子注入沟道效应的关键影响,揭示了Silvaco BCA模块在模拟SiC晶向和角度参数时的核心设置要点。通过详细解析晶圆偏切与注入角度的等效关系,提供优化MOSFET沟道区注入仿真的五步实战方法,帮助工程师将阈值电压仿真误差从26%降低到5%以内。

weixin_26789847的博客 410

Vivado DDR IP自定义型号避坑指南:如何正确填写CSV参数表(附常见错误排查)

本文详细解析了Vivado DDR IP自定义型号配置中的关键步骤与常见问题,特别针对DDR4内存颗粒的参数提取、CSV参数表填写误区及故障排查提供了实用指南。通过实际案例和调试技巧,帮助工程师避免配置陷阱,提升DDR4系统稳定性和性能。

weixin_29280657的博客 416

如何在Eclipse上安装和使用hibernate Tool?

如何在Eclipse上安装和使用hibernate Tool? 分步阅读 1、分享Eclipse Marketplace 使用经验 2、分享安装hibernate Tool 工具/原料 Eclipse 4.x 方法/步骤 1 打开Eclipse 开发工具   2

初衷不改的博客 6252

为什么我的Win11家庭版找不到BitLocker?教你两种强制关闭加密的隐藏方法

本文解释了Win11家庭版为何缺少BitLocker功能,并提供了两种强制关闭加密的隐藏方法。通过注册表修改和PowerShell命令,用户可以调出隐藏的加密控制面板或直接操控加密引擎,解决家庭版设备加密的管理难题。

weixin_42535703的博客 1779

hibernate 插件(Jboss Tools) 的安装方法

本文环境: eclipse:  eclipse-jee-neon-R-win32 方法一:  eclipse -> Help -> Eclipse Marketplace…  弹出如下图:  搜索 jboss tools  点击Install后,如下图:  选择hibernate Tools,然后下一步安装即可  方法二:  由于方法一会受网络不

星辉Johnson的博客 1807

使用Docker搭建SearXNG搜索引擎

【代码】使用Docker搭建SearXNG搜索引擎。

janthinasnail的博客 1176

AutoSAR EcuM系列01- EcuM模块的功能概述和变体类型

在【ECU的软硬件架构】文章中我们了解ECU的功能和组成,那么ECU具体是怎么启动的呢?我们知道,AutoSAR标准架构有三层,即APPL应用层、RTE层和BSW层。而这些层又被进一步划分为更多单独的组件,如BSW层可能有80多个组件。在ECU启动时,这些组件必须相互交互,有时也必须以某种顺序交互。这些组件的启动顺序由ECU管理器模块或EcuM处理。EcuM负责整个ECU的初始化和去初始化,包括对一些系统模块如。......

1767

如何在Eclipse中使用Hibernate插件

安装  可以使用Eclipse的内置Update Manager安装Hibernate Synchronizer(下载地址:https://sourceforge.net/project/showfiles.php?group_id=99370)。该插件为Eclipse 2.1和即将发布的Eclipse 3的用户提供独立的更新站点。因启动Eclipse,选择Help -> Software Upd

baggio785的专栏 4314

【YOLO11改进 - C3k2融合】C3k2融合动态蛇形卷积(Dynamic Snake Convolution)用于管状结构分割任务

【YOLO11改进 - C3k2融合】C3k2融合动态蛇形卷积(Dynamic Snake Convolution)用于管状结构分割任务

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 519

在Eclipse中使用Hibernate插件(一)

最近我开始使用Eclipse作为我的开发环境,部分原因是因为在我进行开发的许多平台上都可以使用Eclipse来工作,还有部分原因是因为Eclipse是展示人人皆可作出贡献的开放、可扩展环境的优势的一个极好的例子。我开始研究其他人提供的对Eclipse的扩展。例如,当用到xml文件时,我使用XMLBuddy插件。该插件对于我的工作很有助益。因为最近一直在写Developers Notebook,所

FireElement的专栏 7924

以太网_RGMII接口与GMII接口的转化_03

RGMII接口转GMII接口!

weixin_42499230的博客 379

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Eclipse安装Hibernate插件

Eclipse本身的开发能力比较有限,通过插件可以大大增强它的功能。Eclipse插件的安装方式有三种: 在线安装 手动安装 使用本地压缩包安装 学习Hibernate的过程中按照视频使用本地压缩包的方式安装其插件,在jboss官网下载压缩包后,在eclipse中选中压缩包文件后却报错“can not find file”。网上有人说是下载的插件压缩包版本要和使用的eclipse版本一致,但在...

qq_43015237的博客 1087

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Eclipse中安装Hibernate的插件

(1)了解什么是Hibernate? 1.持久化框架(和数据库的操作有关) 2.ORM框架(Object/Relation Mapping)对象/关系 映射 (2)Hibernate与JDBC比较:代码更简洁,开发效率更高。但是JDBC虽然开发效率慢,但是性能高 (3)ORM框架:1.Hibernate(重量级框架):成熟稳定优秀框架对数据库版本的sql语句不限定(其实是不需要写sql语句

name_Fay的博客 2185

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

eclipse安装hibernate插件步骤

1下载插件 2安装插件1、下载插件hibernate tools官网地址点击downloads进入下载页选择相应版本 2、安装插件eclipse==》help==》install new software 点击add在loacation选择下载的zip包,name自己随意填 找到jboss web and j2ee..下面的hibernate(如果需要其他插件就勾选,我这里只用hibernat

TYH的博客 9810

Hibernate Tools for Eclipse插件的安装和使用

下面是如何用Hibernatetools进行Hibernate开发 安装Hibernate插件 方法一 clipse helios(3.6)版 1.启动eclipse 2.选择Help > Install New Software...> 3.添加如下地址:http://download.jboss.org/jbosstools/updates/stable/helios/

1万+
上一篇: 在Eclipse中使用Hibernate(三)
下一篇: 在Eclipse中使用Hibernate插件(一)
FireElement
博客等级 码龄23年 48粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值