首页 > 开发 > 综合 > 正文

Eclipse快速上手Hibernate--3. 利用XDoclet开发

2024-07-21 02:14:09
字体:
来源:转载
供稿:网友
    这篇文章是上两篇文章《eclipse快速上手hibernate--1. 入门实例》和《eclipse快速上手hibernate--2. 利用hbm映射文件开发》的延续,主要说的是如何利用xdoclethbm映射文件产生hbm映射文件及数据表。可以参考xdoclet文档中关于hibernate的部分和夏昕编写的《hibernate开发指南》。同样,这篇文章没有过多谈理论,只是给出了一个完整的实例加以说明。相关配置请参考上两篇文章。  1. 创建项目 ·  新建一个java项目:hibernatebegin_3,注意选中“创建单独的源文件夹和输出文件夹”,同时添加“用户库”:hibernate。  2.  文件user.java ·  新建一个类,包名:javamxj.hibernate,类名:user。然后在生成的代码中添加变量,再利用“生成 getter 和 setter”,具体方式同《eclipse快速上手hibernate--1. 入门实例 》文章中的编辑user.java的方式一样。   ·  添加hibernatedoclet标记,关于如何利用jboss-ide添加xdoclet标记的技巧参考《eclipse快速上手ejb -- 1. lomboz + jboss-ide 配置2 》文中的关于jboss-ide的部分,这是添加hibernatedoclet后的代码: 
user.java

/* * 采用hibernatedoclet开发一个简单的hibernate实例 * 创建日期 2005-3-31 * @author javamxj(分享java快乐) * @link blog: htpp://javamxj.mblogger.cn * htpp://blog.csdn.net/javamxj/ */package javamxj.hibernate;/** * @hibernate.class table = "usertable3" */public class user {private int id;private string username;private string password; /** * @hibernate.id * column = "id" * generator-class = "hilo" */public int getid() {return id;}public void setid(int id) {this.id = id;}/** * @hibernate.property * length = "24" * not-null = "true" */public string getpassword() {return password;}public void setpassword(string password) {this.password = password;}/** * @hibernate.property * column = "用户名" * length = "24" * not-null = "true" */public string getusername() {return username;}public void setusername(string username) {this.username = username;}}
  ·  添加类标记“ @hibernate.class table ="usertable3" ”用来生成数据库的表usertable3。·  “ @hibernate.id"用来生成主键,注意这里采用是hilo(高低位)生成器,需要额外的数据库表保存主键生成历史状态。·  “ @hibernate.property”描述pojo中属性与数据库表字段之间的映射关系。   ●  更新xdoclet-hibernate-module ·  将xdoclet1.2.2中的xdoclet-hibernate-module-1.2.2.jar复制到jbosside-1.4.1-e30/eclipse/plugins/org.jboss.ide.eclipse.xdoclet.core_1.4.1目录中,并且删除其目录下的xdoclet-hibernate-module-1.2.1.jar文件,然后在eclipse界面中,窗口 ->首选项 ->jboss-ide ->xdoclet ->code assist:点击右侧的“refresh xdoclet data”栏,即可完成更新。如果要替换其它的模块,步骤与此类似。  3. 项目结构 · 将上篇文章中的“build.xml”复制到项目根目录下,配置文件“hibernate.cfg.xml”复制到src目录下,这时的项目结构如图:  4. 运行任务 ·  双击“generate-hbm”任务,然后按一下“f5”功能键刷新一下包“javamxj.hibernate”,应该可以看到这个包下的“user.hbm.xml”。文件如下:
user.hbm.xml
<?xml version="1.0" encoding="gbk"?><!doctype hibernate-mapping public    "-//hibernate/hibernate mapping dtd 2.0//en"     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping>    <class        name="javamxj.hibernate.user"        table="usertable3"        dynamic-update="false"        dynamic-insert="false"        select-before-update="false"        optimistic-lock="version"    >        <id            name="id"            column="id"            type="int"        >            <generator class="hilo">              <!--                    to add non xdoclet generator parameters, create a file named                   hibernate-generator-params-user.xml                   containing the additional parameters and place it in your merge dir.               -->             </generator>        </id>        <property            name="password"            type="java.lang.string"            update="true"            insert="true"            access="property"            column="password"            length="24"            not-null="true"        />        <property            name="username"            type="java.lang.string"            update="true"            insert="true"            access="property"            column="用户名"            length="24"            not-null="true"        />        <!--            to add non xdoclet property mappings, create a file named                hibernate-properties-user.xml            containing the additional properties and place it in your merge dir.        -->    </class></hibernate-mapping>   ●  生成数据表·  启动mysql,应该确定含有hibernatetest数据库,不过这次不需要建立数据表了。·  双击“schemaexport”任务,然后刷新项目根目录,会发现出产生的“schema-export.sql”文件。 schema-export.sqldrop table if exists usertable3drop table if exists hibernate_unique_keycreate table usertable3 (   id integer not null,   password varchar(24) not null,   用户名 varchar(24) not null,   primary key (id))create table hibernate_unique_key (    next_hi integer )insert into hibernate_unique_key values ( 0 ) ·  切换到数据库中,会发现已经自动产生了数据表usertable3和hibernate_unique_key:    5. 测试程序 好了,将上篇文章中的test.java文件复制到包“javamxj.hibernate”下,然后右击运行这个文件,可以看到数据表中生成的数据(图中的数据是连续运行4次后产生的)。   6. log4j    log4j是一个开放源码的项目。它允许开发员以任意的间隔来控制日志的输出。它通过设在外部的配置文件而达到运行时灵活的设置。    运行log4j的库文件都已经放到先前建立的hibernate库文件夹中了,你只要找到下载的hibernate 2.1.8压缩文件中的etc目录,复制其中的log4j.properties文件到项目中的src目录即可。 运行test.java,可以看到控制台的输出语句似乎和先前没有用log4j没有什么区别。 现在打开log4j.properties,找到“log4j.logger.net.sf.hibernate=info”语句,将其改成“log4j.logger.net.sf.hibernate=warn”,再次运行test.java,可以看到控制台的输出语句只有两条了:21:03:55,687  warn configurator:125 - no configuration found. configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/d:/java/hibernate/lib/ehcache-0.9.jar!/ehcache-failsafe.xmlhibernate: insert into usertable3 (password, 用户名, id) values (?, ?, ?)警告信息是指缓存配置文件没有找到,以后用到时再谈谈这一点。 好了,hibernate结合log4j的使用就是这么简单。关于log4j的使用,比较简单,网上的资料也很多,自己可以google一下。   小结:  hibernate的开发相当灵活,可以采用多种方式开发。 ·  只有hbm映射文件:映射文件---hbm2java----java---schemaexport----数据表·  只有java:    java---xdoclet---hbm----schemaexport----数据表·  如果只有数据表呢?可以采用middlegen:                   数据表---middlegen---hbm----hbm2java----java      关于利用middlegen开发hibernate的方法,可以参考夏昕编写的《hibernate开发指南》。   ·  至于有关hibernate的eclipse插件,也有很多,可以看看《working with hibernate in eclipse》。              

最大的网站源码资源下载站,

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表