前两天 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
|