ChinaUnix首页 > 精华文章 > Java > 正文

[原创] 用 hibernate 和 xdoclet 开发 数据库应用程序


http://www.chinaunix.net 作者:cinc  发表于:2004-02-11 14:33:42
发表评论】 【查看原文】 【Java讨论区】【关闭

前两天 xdoclet 发布了版本 1.2b3,里面包含了 hibernate 的自动生成 mapping file 的 module 
今天试了试,居然成功了,很有意思。 



用 hibernate 和 xdoclet 开发的流程如下: 

  1.写 Persistent class,并在 源程序里写上一些 hibernate 的 tag 

  2.用 xdoclet 根据 Persistent class 里的 tag 自动生成 mapping file 

  3.用 Hibernate 提供的 SchemaExport 类生成 数据库建表的 ddl 

然后就不用考虑数据库的细节啦,哈哈。

中文的一篇文档:

值得关注的持久化技术: hibernate 
http://www.huihoo.com/java/hibernate/


这里有老外写的详细的文档,介绍 hibernate 和 xdoclet ,里面也包含了代码下载: 
  http://www.meagle.com:8080/hibernate.jsp  


我自己学习过程中也写了一个 demo,用 ant 运行,来我的 ftp 下载: 

  ftp://cinc.3322.org/pub/doc/code/hibernate/ 

    hibernatedemo_20030622.zip          是没用 xdoclet 的例子 
    hibernate_xdoclet_demo_20030614.zip 是使用 xdoclet 的例子 
    HibernateExamplesMeagle.zip         Meagle 那个网站的例子 


hibernate:
http://sourceforge.net/projects/hibernate/

xdoclet:
http://sourceforge.net/projects/xdoclet/



 xxmouse 回复于:2003-06-18 15:44:45

Hi, I tried to download your sample code for using hibernate+xdoclet, but couldn't find your ftp site, I assume that it's down?would you pls send your code to the following mailbox?
xxmouse@hotmail.com, 
thank you in advance


 cinc 回复于:2003-06-18 17:27:48

the source code is a bit large.

try this ip:

ftp://210.52.88.133


 bruce1 回复于:2003-06-19 23:45:17

cinc 

昨天才发现这个坛子, 觉得挺好的.  相信一定是只潜力股.

我已经下了你的文件, 试了一下,  不过我还是花了一点时间改了一下build.xml.  同时也把相应的包拷过来, 最后就可以转起来了. 现在正准备找找Hibernate 与 CMP 的差别.

再次感谢您的帮助, 希望以后大家能多交流. :)


 cinc 回复于:2003-06-20 09:07:51

呵呵,多谢夸奖,多来捧场哦。

那个包应该就可以运行乐啊。你还拷贝乐哪些包过来,说说看。

我所有的包都放在 lib 目录下的,包括 hibernate ,xdoclet 和其他,我的运行环境是:

jdk    1.4.1 
mysql  4.0 
ant    1.5.3 

hibernate 2.0 
xdoclet 1.2b3-dev 
xdoclet hibernate module 1.2b3-dev 

多交流,呵呵。
:)


 bruce1 回复于:2003-06-23 21:42:14

你好, cinc

看了你的例子和http://www.huihoo.com/java/hibernate/ 的例子, 觉得你的要丰富很多, 而且他那边没有解决在ant 中运行java命令的问题. 你这边就没有这个问题.  佩服!

我把你的build.xml 改为
<?xml version="1.0"?>;

<project default="build" basedir=".">;

    <property name="appname" value="Helloworld" />;
    <property name="base" value="." />;
    <property name="src" value="src" />;
    <property name="db" value="db" />;
    <property name="lib" value="lib" />;
    <property name="build" value="classes" />;
    <property name="mysql.batch" value="${base}/db/schema.bat"/>;
    <property name="mysql.schema" value="${base}/db/mysql.sql"/>;
    <property name="myclasspath" value="${build}" />;
    
    <path id="myclasspath">;
        <fileset dir="${lib}">;
            <include name="*.jar"/>;
        </fileset>;
        <pathelement location="${build}"/>;
    </path>;
    
    <target name="build">;
        <echo message="delete begin..." />;
        <delete includeEmptyDirs="true">;
          <fileset dir="${build}"/>;
        </delete>; 
        <mkdir dir="${build}" />;
        <javac classpathref="myclasspath" srcdir="${src}" destdir="${build}">;
            <include name="**/*.java" />;
        </javac>;
        <copy todir="${build}" >;
            <fileset dir="src/java" >;
                <exclude name="**/*.java"/>;
            </fileset>;
        </copy>;
        
        
        <echo message="database.." />;
        <java classname="net.sf.hibernate.tool.hbm2ddl.SchemaExport" fork="true">;
            <classpath refid="myclasspath"/>;
            <arg value="--text"/>;
            <arg value="--output=db/schema.sql"/>;
            <arg value="--properties=src/java/hibernate.properties"/>;
            <arg value="--delimiter=;"/>;
            <arg value="src/java/bean/*.xml"/>;
        </java>;
        
        <echo message="create database schema..." />;
        <exec executable="${mysql.batch}">;
            <arg file="${mysql.schema}" />;
        </exec>;
        
        <echo message="run..." />;
        <java classname="ui.Main" fork="true">;
            <classpath refid="myclasspath"/>;
        </java>;
        
        <java classname="dao.hibernate.AllTests" fork="true">;
            <classpath refid="myclasspath"/>;
        </java>;
        
    </target>;

原因是按你那样写target, 我不知为什么运行ant到 </copy>;那行就结束了. 不知你是否以前有这样的问题?

很久都没有碰java那些东西了, 已经在落伍了, 今后我一定常到这里, 真心希望这里越来越好.


 fanth 回复于:2004-02-11 14:33:42

我不能下你的例子,可以给发一份吗?谢谢!
clm1668@hotmail.com




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=92019
转载请注明作者名及原文出处