用户操作
[即时聊天] [发私信] [加为好友]
leeshaoqunID:leeshaoqun
142982次访问,排名559好友0人,关注者2
leeshaoqun的文章
原创 92 篇
翻译 1 篇
转载 135 篇
评论 36 篇
allin的公告
Allin的博客
老照片
最近评论
qqq:www
mldstk:wow gold,
mldstk:wow gold,
alex.xu:漂亮 ,说实话 比官方文档写的好
lkuzhi:是啊,能不能找个能用的过来啊
文章分类
收藏
    相册
    ♡韩国可爱的小童星 ♡
    korea
    韩佳人
    金泰熙
    宋惠乔
    宋慧乔车太贤《我和我的女友》
    微笑美女——韩孝珠
    Hibernate
    Hibernate中文网
    Hibernate官方网站
    php
    Haohappy的专栏--PHP5研究中心
    Spring
    Raible's Wiki -- AppFuse
    Spring 开发参考手册
    SpringFramework中文论坛
    SpringFramework官方站点
    个人博客
    greengnn's space
    开源
    java开源大全(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Eclipse快速上手Hibernate--2. 利用Hbm映射文件开发 收藏

    新一篇: Eclipse快速上手Hibernate--3. 利用XDoclet开发  | 旧一篇: Java执行速度大幅提高

       这篇文章是上篇文章《Eclipse快速上手Hibernate--1. 入门实例》的延续,主要说的是如何利用Hbm映射文件产生普通的Java对象及数据表。可以参考Hibernate自带的文档《HIBERNATE - 符合Java习惯的关系数据库持久化》的第15章--《工具箱指南》一节。同样,这篇文章没有过多谈理论,只是给出了一个完整的实例加以说明。相关配置请参考上篇文章
     
     
    1. 创建项目
     
    ·  新建一个Java项目:HibernateBegin_2,注意选中“创建单独的源文件夹和输出文件夹”,同时添加“用户库”:hibernate。
     
    2.  映射文件User.hbm.xml
     
    ·  新建一个包,包名:javamxj.hibernate,然后在此包下新建一个文件,文件名:User.hbm.xml。
    User.hbm.xml
    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" 
    	"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    	
    <hibernate-mapping>
    		
    	<class name="javamxj.hibernate.User" table="UserTable2">
    		
    		<meta attribute="class-description"> 
    			运行 Hbm2Java 任务, 利用 hbm.xml文件生成Java类文件 
    			@author javamxj(分享java快乐) 
    			@link Blog: htpp://javamxj.mblogger.cn 
    			            htpp://blog.csdn.net/javamxj/ 
    		</meta>
    		
    		<id name="id" type="string" unsaved-value="null" length="32" column="ID">
    			<generator class="uuid.hex"/>
    		</id>
    		
    		<property name="username" type="string" not-null="true" length="24">
    			<meta attribute="field-description">@param 用户名</meta>
    		</property>
    		
    		<property name="password" type="string" not-null="true" >
    			<column name="密码" length="24" not-null="true"></column>
    		</property>
    		
    	</class>
    </hibernate-mapping>   
     
    ●  与上篇文章中的User.hbm.xml文件比较,可以发现标签上增加了许多额外的设定。
    ·  这里<meta>标签中的内容将插入到类的javadoc说明去。 
    ·  <id>标签使用 uuid.hex 来定义主键的产生算法,UUID算法使用IP地址、JVM的启动时间、系统时间和一个计数值来产生主键。
    ·  <property>标签中的<column>用于生成数据表中的列。
     
     
    3. 构建文件Build.xml
     
    ·  将上篇文章中的“hibernate.cfg.xml”配置文件复制到src目录下。
     
    ·  在项目根目录下建立一个build.xml,这个文件含有四个任务,这里会用到“generate-code”、“schemaexport”两个任务,至于用法可以看注释。要注意环境变量的设置要符合自己的实际配置,比如库文件目录的设置是"D:/java/Hibernate/lib",是沿用上篇文章中的设置。

    build.xml

    <?xml version="1.0" encoding="GBK"?>
    <project name="利用工具开发Hibernate" default="help" basedir=".">
    
    	<!-- ******  环境设置,可以根据自己的实际配置自行更改 ***** -->
    	<!-- 源文件目录, 可以通过 项目->属性->Java构建路径 更改 -->
    	<property name="src.dir" value="./src" />
    	<!-- 输出的class文件目录,可以通过 项目->属性->Java构建路径 更改 -->
    	<property name="class.dir" value="./bin" />
    	<!-- 库文件目录  -->
    	<property name="lib.dir" value="D:/java/Hibernate/lib" />
    
    	<!-- 定义类路径 -->
    	<path id="project.class.path">
    		<fileset dir="${lib.dir}">
    			<include name="*.jar"/>
    		</fileset>
    		<pathelement location="${class.dir}" />
    	</path>
    
    	<!-- ************************************************************** -->
    	<!-- 使用说明 -->
    	<!-- ************************************************************** -->
    	<target name="help">
    		<echo message="利用工具开发Hibernate" />
    		<echo message="-----------------------------------" />
    		<echo message="" />
    		<echo message="提供以下任务:" />
    		<echo message="" />
    		<echo message="generate-code     --> 运行Hbm2Java,利用 hbm.xml 文件生成Java类文件" />
    		<echo message="generate-hbm      --> 运行HibernateDoclet,生成 Hibernate 类的映射文件" />
    		<echo message="schemaexport     --> 运行SchemaExport,利用 hbm.xml 文件生成数据表" />
    		<echo message="" />
    	</target>
    
    
    	<!-- ************************************************************** -->
    	<!-- Hbm2Java 任务 -->
    	<!-- ************************************************************** -->
    	<target name="generate-code" >
    		<echo message="运行 Hbm2Java 任务, 利用 hbm.xml 文件生成Java类文件"/>
    
    		<taskdef name="hbm2java"
    		     classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
    	         classpathref="project.class.path">
    		</taskdef>
    
    		<hbm2java output="${src.dir}">
    			<fileset dir="${src.dir}">
    				<include name="**/*.hbm.xml"/>
    			</fileset>
    		</hbm2java>
    	</target>
    
    
    	<!-- ************************************************************** -->
    	<!-- HibernateDoclet 任务 -->
    	<!-- ************************************************************** -->
    	<target name="generate-hbm" >
    		<echo message="运行HibernateDoclet,生成 Hibernate 类的映射文件"/>
    
    		<taskdef name="hibernatedoclet" 
    			classname="xdoclet.modules.hibernate.HibernateDocletTask" 
    			classpathref="project.class.path">
    		</taskdef>
    
    		<hibernatedoclet destdir="${src.dir}" 
    			excludedtags="@version,@author,@todo" force="true" encoding="GBK" 
    			verbose="true">
    
    			<fileset dir="${src.dir}">
    				<include name="**/*.java"/>
    			</fileset>
    
    			<hibernate version="2.0" xmlencoding="GBK" />
    		</hibernatedoclet>
    	</target>
    
    
    	<!-- ************************************************************** -->
    	<!-- SchemaExport 任务 -->
    	<!-- ************************************************************** -->
    	<target name="schemaexport">
    		<echo message="运行SchemaExport,利用 hbm.xml 文件生成数据表"/>
    
    		<taskdef name="schemaexport" 
    			classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask" 
    			classpathref="project.class.path">
    		</taskdef>
    
    		<schemaexport config="${src.dir}/hibernate.cfg.xml" quiet="no" 
    			text="no" drop="no" output="schema-export.sql">
    		</schemaexport>
    	</target>
    
    </project>
    
     
     
    ·  最后的目录结构如下:
     
     
     
    4. 运行任务
     
    ·  右击“build.xml” ->“运行” ->这里应该有“Ant 构建”和“Ant 构建...”两个菜单,其中“Ant 构建”直接运行缺省任务,这里是指“help”任务;如果要运行其它的任务,可以通过“Ant 构建...”菜单选择。
    ·  这里还有一种更好的方法,Eclipse主菜单上点击“窗口” ->“显示视图” ->点击“Ant”,这样就调出了Ant视图,在这个视图窗口的空白处,右击,在弹出菜单中选择“添加构建文件”,然后将HibernateBegin_2项目根目录下的“build.xml”文件载入即可。效果如图:
    这样,想运行某个任务,直接双击Ant视图中的任务即可。
     
    生成User.java
    ·  双击“generate-code”任务,在控制台应该可以看到如下输出:
     
    ·  如果在src目录下没有看到“User.java”这个文件,那么选中src目录,然后按一下“F5”功能键刷新一下src目录,应该可以在包“javamxj.hibernate”下看到“User.java”。这个文件就是“Hbm2Java”生成器根据hbm文件产生的,如下:

    User.java

    package javamxj.hibernate;
    
    import java.io.Serializable;
    import org.apache.commons.lang.builder.ToStringBuilder;
    
    
    /** 
     *  
     * 			运行 Hbm2Java 任务, 利用 hbm.xml文件生成Java类文件 
     * 			@author javamxj(分享java快乐) 
     * 			@link Blog: htpp://javamxj.mblogger.cn 
     * 			            htpp://blog.csdn.net/javamxj/ 
     * 		
    */
    public class User implements Serializable {
    
        /** identifier field */
        private String id;
    
        /** persistent field */
        private String username;
    
        /** persistent field */
        private String password;
    
        /** full constructor */
        public User(String username, String password) {
            this.username = username;
            this.password = password;
        }
    
        /** default constructor */
        public User() {
        }
    
        public String getId() {
            return this.id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        /** 
         * @param 用户名
         */
        public String getUsername() {
            return this.username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return this.password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String toString() {
            return new ToStringBuilder(this)
                .append("id", getId())
                .toString();
        }
    
    }
    
    可以对照“User.hbm.xml”文件,看看都是哪些属性转化成什么代码。
     
    ●  生成数据表
    ·  启动MySql,应该确定含有HibernateTest数据库,不过这次不需要建立数据表了。
    ·  双击“schemaexport”任务,控制台输出如下,注意自动生成的SQL语句:
     
    ·  同时,在项目根目录下,也会产生一个“schema-export.sql”文件(如果没有,按F5键刷新目录),这个文件是在“build.xml”中设定的:
    schema-export.sql
    drop table if exists UserTable2
    create table UserTable2 (
       ID varchar(32) not null,
       ddd varchar(24) not null,
       密码 varchar(24) not null,
       primary key (ID)
     
    ·  切换到数据库中,会发现已经自动产生了数据表usertable2:
     
     
    5. 测试程序
     
    好了,将上篇文章中的test.java文件复制到包“javamxj.hibernate”下,然后右击运行这个文件,可以看到数据表中生成的数据。
     
     
     
    小结 
     
      
    好了,再来看看整个项目的结构,其中“User.java”和“schema-export.sql”两个文件都是自动生成的,要注意的一点是:生成“schema-export.sql”文件需要调用“User.java”文件,所以“generate-code”任务要在“schemaexport”任务前执行。
     
       最好使用XMLBuddy插件来编辑xml文件,可以参考:    
       关于如何利用Hbm映射文件产生普通的Java对象及数据表,还需要多看看参考文档,也要多加练习,在实践中掌握,在实践中前进。
       下篇文章会谈谈利用XDoclet开发Hibernate。

    发表于 @ 2006年02月18日 19:34:00|评论(loading...)|编辑

    新一篇: Eclipse快速上手Hibernate--3. 利用XDoclet开发  | 旧一篇: Java执行速度大幅提高

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © allin