﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-想飞就飞-随笔分类-java</title><link>http://www.cnitblog.com/wldandan/category/511.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 22:44:17 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 22:44:17 GMT</pubDate><ttl>60</ttl><item><title>MiddleGen的使用总结</title><link>http://www.cnitblog.com/wldandan/archive/2005/08/15/2072.html</link><dc:creator>想飞就飞</dc:creator><author>想飞就飞</author><pubDate>Mon, 15 Aug 2005 05:04:00 GMT</pubDate><guid>http://www.cnitblog.com/wldandan/archive/2005/08/15/2072.html</guid><wfw:comment>http://www.cnitblog.com/wldandan/comments/2072.html</wfw:comment><comments>http://www.cnitblog.com/wldandan/archive/2005/08/15/2072.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/wldandan/comments/commentRss/2072.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wldandan/services/trackbacks/2072.html</trackback:ping><description><![CDATA[<P><FONT size=2>一 环境配置<BR>&nbsp;&nbsp; <BR>&nbsp; 需要的包:jsdk,ant,hibernate,hibernate-extension,MiddleGen</FONT></P>
<P><FONT size=2>二 环境变量设置<BR>&nbsp; 一般步骤可参照网上<BR>&nbsp; 这里,我是这样使用的<BR>&nbsp; <BR>&nbsp;&nbsp; 拷贝%hibernate_Home%\lib*.jar到%MiddleGen%\lib<BR>&nbsp;&nbsp; 拷贝%hibernate_Home%\hibernate2.jar到%MiddleGen%\lib<BR>&nbsp;&nbsp; 拷贝%hibernate-extension_Home%\tools\lib*.jar到%MiddleGen%\lib<BR>&nbsp;&nbsp; 拷贝%hibernate-extension_Home%\tools\hibernate-tools.jar到%MiddleGen%\lib</FONT></P>
<P><BR><FONT size=2>三 MiddleGen的配置<BR>&nbsp;&nbsp;&nbsp; 配置目标数据库参数<BR>进入MiddleGen 目录下的\config\database 子目录，根据我们实际采用的数据库打开<BR>对应的配置文件。如这里我们用的是mysql数据库，对应的就是mysql.xml文件。<BR>&lt;property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/&gt;<BR>&lt;property name="database.driver.file" value="${lib.dir}/mysql.jar"/&gt;<BR>&lt;property name="database.driver.classpath" value="${database.driver.file}"/&gt;<BR>&lt;property name="database.driver" value="org.gjt.mm.mysql.Driver"/&gt;<BR>&lt;property name="database.url" value="jdbc:mysql://localhost/sample"/&gt;<BR>&lt;property name="database.userid" value="user"/&gt;<BR>&lt;property name="database.password" value="mypass"/&gt;<BR>&lt;property name="database.schema" value=""/&gt;<BR>&lt;property name="database.catalog" value=""/&gt;<BR>&lt;property name="jboss.datasource.mapping" value="mySQL"/&gt;<BR><BR>3) 修改Build.xml<BR>修改MiddleGen 根目录下的build.xml 文件，此文件是Middlegen-Hibernate 的Ant<BR>构建配置。Middlegen-Hibernate将根据build.xml文件中的具体参数生成数据库表映射<BR>文件。可配置的项目包括：<BR>a) 目标数据库配置文件地址<BR>查找关键字 ”!ENTITY”，得到：<BR>&lt;!DOCTYPE project [<BR>&lt;!ENTITY database SYSTEM<BR>"file:./config/database/hsqldb.xml"&gt;<BR>]&gt;<BR>默认情况下，MiddleGen 采用的是hsqldb.xml，将其修改为我们所用的数据<BR>库配置文件（mysql.xml）：<BR>&lt;!DOCTYPE project [<BR>&lt;!ENTITY database SYSTEM<BR>"file:./config/database/mysql.xml"&gt;<BR>]&gt;<BR>b) Application name<BR>查找：<BR>&lt;property name="name" value="airline"/&gt;<BR>“aireline”是MiddleGen原始配置中默认的 Application Name，将其修改为我们<BR>所希望的名称，如“HibernateSample”：<BR>&lt;property name="name" value="HibernateSample"/&gt;<BR>c) 输出目录<BR>查找关键字“name="build.gen-src.dir"”，得到：<BR>&lt;property name="build.gen-src.dir"<BR>value="${build.dir}/gen-src"/&gt;<BR>修改value="${build.dir}/gen-src"使其指向我们所期望的输出目录，<BR>这里我们修改为：<BR>&lt;property name="build.gen-src.dir"<BR>value="C:\sample"/&gt;<BR>d) 对应代码的Package name<BR>查找关键字“destination”，得到：<BR>&lt;hibernate<BR>destination="${build.gen-src.dir}"<BR>package="${name}.hibernate"<BR>genXDocletTags="false"<BR>genIntergratedCompositeKeys="false"<BR>javaTypeMapper=<BR>"middlegen.plugins.hibernate.HibernateJavaTypeMapper"<BR>/&gt;<BR>可以看到，hibernate 节点package 属性的默认设置实际上是由前面的<BR>Application Name （${name}）和“.hibernate”组合而成，根据我们的需要，<BR>将其改为：<BR>&lt;hibernate<BR>destination="${build.gen-src.dir}"<BR>package="org.hibernate.sample"<BR>genXDocletTags="true"<BR>genIntergratedCompositeKeys="false"<BR>javaTypeMapper=<BR>"middlegen.plugins.hibernate.HibernateJavaTypeMapper"<BR>/&gt;<BR>这里还有一个属性genXDocletTags，如果设置为true，则生成的代码将包含<BR>xdoclet tag，这为以后在开发过程中借助xdoclet进行映射调整提供了帮助</FONT></P>
<P><FONT size=2>至此为止，MiddleGen 已经配置完毕，在MiddleGen 根目录下运行ant，就将出现<BR>MiddleGen的界面：</FONT></P>
<P><BR><FONT size=2>四 .xml到.java<BR>&nbsp;&nbsp; 在得到.xml后,使用ant hbm2java 即可得到相应的java文件</FONT></P>
<P><FONT size=2>总结:<BR>&nbsp; 我第一次运行成功,但是后来则出现类似错误,检查发现在MiddleGen的lib目录下存在多个类似的jar包<BR>(velocity.jar,velocity***.jar),删除旧的jar包后,问题解决</FONT></P>
<P><FONT size=2>[middlegen] java.lang.IncompatibleClassChangeError<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at middlegen.KindFileResourceLoader.getResourceStream(KindFileRe<BR>sourceLoader.java:82)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.Template.process(Template.java:136)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.resource.ResourceManagerImpl.load<BR>Resource(ResourceManagerImpl.java:466)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.resource.ResourceManagerImpl.getR<BR>esource(ResourceManagerImpl.java:384)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.RuntimeInstance.getTemplate(Runti<BR>meInstance.java:814)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.RuntimeInstance.getTemplate(Runti<BR>meInstance.java:796)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.VelocimacroFactory.initVelocimacr<BR>o(VelocimacroFactory.java:211)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInsta<BR>nce.java:276)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInsta<BR>nce.java:441)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.ja<BR>va:148)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at middlegen.Plugin.getEngine(Plugin.java:560)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at middlegen.Plugin.generate(Plugin.java:444)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at middlegen.Middlegen.writeSource(Middlegen.java:411)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at middlegen.swing.JMiddlegenFrame$1.actionPerformed(JMiddlegenF<BR>rame.java:72)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at javax.swing.AbstractButton.fireActionPerformed(AbstractButton<BR>.java:1786)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at javax.swing.AbstractButton$ForwardActionEvents.actionPerforme<BR>d(AbstractButton.java:1839)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultBut<BR>tonModel.java:420)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.<BR>java:258)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Basi<BR>cButtonListener.java:245)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.processMouseEvent(Component.java:5100)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.processEvent(Component.java:4897)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Container.processEvent(Container.java:1569)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.dispatchEventImpl(Component.java:3615)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Container.dispatchEventImpl(Container.java:1627)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.dispatchEvent(Component.java:3477)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.LightweightDispatcher.retargetMouseEvent(Container.j<BR>ava:3483)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.LightweightDispatcher.processMouseEvent(Container.ja<BR>va:3198)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3<BR>128)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Container.dispatchEventImpl(Container.java:1613)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Window.dispatchEventImpl(Window.java:1606)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.dispatchEvent(Component.java:3477)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDi<BR>spatchThread.java:201)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDisp<BR>atchThread.java:151)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.j<BR>ava:145)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.j<BR>ava:137)<BR>[middlegen]&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventDispatchThread.run(EventDispatchThread.java:100<BR>)<BR></FONT></P><img src ="http://www.cnitblog.com/wldandan/aggbug/2072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wldandan/" target="_blank">想飞就飞</a> 2005-08-15 13:04 <a href="http://www.cnitblog.com/wldandan/archive/2005/08/15/2072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>