Samuel Learning

  • 联系
  •  
  • 管理

文章分类(203)

  • 01 ASP/HTML(6)
  • 02 Script/CSS(16)
  • 03 C/C++
  • 04 XML(4)
  • 05 微软编程(26)
  • 06 J2EE(60)
  • 09 Linux(14)
  • 10 Database(27)
  • 11 报表打印
  • 12 打包安装(1)
  • 13 模式重构(2)
  • 14 系统架构
  • 15 敏捷开发(11)
  • 16 案例分析(30)
  • 17 Workflow(1)
  • 18 配置管理(1)
  • 19 项目管理
  • 20 英语(4)

新闻分类(52)

  • CXF学习
  • Hibernate学习(1)
  • iBatis学习(16)
  • Struts1学习(1)
  • Struts2学习(34)

.NET资源

  • adxmenu
  • C# Open Source
  • DNN Directory
  • M2Land
  • Windows Form FAQ
  • 中国DNN
  • 中国DNN联盟

Ajax

  • DoJo
  • GWT
  • JQuery
  • jquery autocomplete
  • jquery flexgrid
  • JQuery Form
  • jquery masked input
  • JQuery UI
  • jquery validation
  • Jquery 图表
  • jquery报表
  • jquery插件集合
  • Qooxdoo
  • Tibco GI
  • YUI
  • YUI-EXT
  • ZeroKode

Java开源

  • ABLE
  • Agile Tao
  • Ajax4JSF
  • Alfresco
  • AppFuse
  • Compiere
  • Equinox
  • Findbugs
  • Geronimo
  • Grails
  • Harmony
  • Hibernate论坛
  • JAG
  • Java开源大全
  • Java视线论坛
  • jBPM工作流
  • JSFTutorials
  • Nereide ERP
  • Ofbiz ERP
  • Opentaps ERP
  • operamasks
  • Petstore
  • Prototype.js
  • RIFE
  • Runa
  • SpringSide
  • Struts Menu
  • Sun Glassfish
  • Trails
  • YUI4JSF
  • 满江红

Mobile

  • Sencha

WEB资源

  • DHTML中心
  • DHTML参考手册
  • DHTML文档
  • EclipsePlugin
  • Firebug
  • GRO Clinux
  • jMaki
  • JSTL文档
  • LoadIcon
  • Openlaszlo
  • Struts Menu 展示
  • Web Test Tools
  • WebCtrs
  • Webdeveloper
  • 中国RIA开发者论坛

Workflow

  • E-Workflow
  • JBPM
  • OpenWFE
  • OSWorkflow
  • WFMC
  • Workflow Research

其他连接

  • confach
  • CPP
  • ejay
  • Giovanni
  • 丹佛
  • 交大e-learning
  • 交大研究生院
  • 可恶的猫
  • 天天@blog
  • 我的相册
  • 阿飞

大牛人

  • 32篇JBPM
  • David.Turing
  • HongSoft@业务集成
  • Joel
  • Koen Aers
  • Martinfowler
  • Raible Matt
  • Raible Wiki
  • Scott W.Ambler
  • Tom Baeyens
  • Uncle Bob
  • 一个世界在等待
  • 子在川上曰
  • 小布老师
  • 小明
  • 差沙
  • 徐昊
  • 江南白衣
  • 汪博士
  • 汪小金
  • 银狐999

开源软件

  • 2Bizbox ERP
  • CompiereCRM&ERP
  • EGW
  • Vtiger CRM
  • webERP

敏捷

  • Canoo
  • Cruisecontrol
  • DBUnit
  • EL4Ant
  • Extreme Programming
  • Fit
  • Fitnesse
  • JFrog
  • Liquibase
  • Maven
  • MockObjects
  • Selenium
  • Squish
  • xpairtise
  • XPlanner
  • XProgramming
  • 敏捷联盟

数据库

  • Oracle 中国
  • Oracle-ERP
  • Oracle在线社区

未归类

  • Aquarius Orm Studio
  • mambo建站系统
  • Oracle产品下载
  • 远程同步管理工具Capivara

经典框架

  • Apache Shale
  • formdef-struts
  • FreeMarker 主页
  • JBoss Seam
  • JSF 中心
  • JSF 入门应用
  • JSF中国
  • MyFaces官方
  • Spring 社区
  • Spring专业网站
  • Spring中文论坛
  • Spring参考手册
  • Spring官方网站
  • strecks-struts
  • Struts1
  • Struts2
  • Struts-layout
  • StrutsWiKi
  • Tapestry WIKI
  • Tapestry 官方
  • Tapestry4开发指南
  • Tapestry中文文档
  • Webwork2文档
  • Wicket

网络教程

  • Laliluna
  • RoseIndia
  • Sang Shin
  • Visualbuilder

著名站点

  • Buildix
  • Dev2Dev
  • IBM dev中国
  • InfoQ
  • ITPub
  • Java Eye
  • Java Research
  • JavaRead
  • JavaWorldTW
  • Matrix
  • PHP100
  • PHPX
  • SpringSideWiKi
  • TheServerSide
  • TWPHP
  • 中国工作流论坛

项目管理

  • 管理人网

最新评论

View Post

HibernateTool 关于Ant的正向和反向工程配置

Part1 正向(由POJO和Mapping文件产生数据库脚本,并且创建数据库)
  1,POJO文件
package com.mingisme.ex.hello;

/**
 * Message generated by hbm2java
 
*/
public class Message  implements java.io.Serializable {

    
// Fields    

     
private Long id;
     
private String text;
     
private Message nextMessage;

     
// Constructors

    
/** default constructor */
    
public Message() {
    }
    
    
public Message(String text) {
        
this.text=text;
    }

    
/** full constructor */
    
public Message(String text, Message nextMessage) {
       
this.text = text;
       
this.nextMessage = nextMessage;
    }
    
   
    
// Property accessors
    public Long getId() {
        
return this.id;
    }
    
    
public void setId(Long id) {
        
this.id = id;
    }
    
public String getText() {
        
return this.text;
    }
    
    
public void setText(String text) {
        
this.text = text;
    }
    
public Message getNextMessage() {
        
return this.nextMessage;
    }
    
    
public void setNextMessage(Message nextMessage) {
        
this.nextMessage = nextMessage;
    }
}
   2,Mapping文件
<!--Message.hbm.xml -->
<?
xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

<hibernate-mapping>
    
<class
     
name="com.mingisme.ex.hello.Message" 
     table
="MESSAGES">
        
<id name="id" column="MESSAGE_ID">
            
<generator class="increment" />
        
</id>
        
<property name="text" column="MESSAGE_TEXT" />

        
<many-to-one name="nextMessage" cascade="all"
            column
="NEXT_MESSAGE_ID" class="com.mingisme.ex.hello.Message" foreign-key="FK_NEXT_MESSAGE" />
    
</class>
</hibernate-mapping>
   3,Hibernate配置文件
<!--Hibernate.cfg.xml -->
<!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
      
<session-factory>
          
<property name="hibernate.connection.driver_class">
              org.hsqldb.jdbcDriver
          
</property>
          
<property name="hibernate.connection.url">
              jdbc:hsqldb:hsql://localhost
          
</property>
          
<property name="hibernate.connection.username">
              sa
          
</property>
          
<property name="hibernate.dialect">
              org.hibernate.dialect.HSQLDialect
          
</property>

          
<property name="hibernate.c3p0.min_size">5</property>
          
<property name="hibernate.c3p0.max_size">20</property>
          
<property name="hibernate.c3p0.timeout">300</property>
          
<property name="hibernate.c3p0.max_statements">50</property>
          
<property name="hibernate.c3p0.idle_test_period">3000</property>

          
<property name="show_sql">true</property>
          
<property name="format_sql">true</property>

          
<mapping resource="com/mingisme/ex/hello/Message.hbm.xml" />
      
</session-factory>
</hibernate-configuration>
   4,ant配置
<target name="foreng.ddl" depends="copymetafiles" description="Exports a generated schema to DB and file">

        
<hibernatetool destdir="${basedir}/db">
            
<classpath path="${maven.build.output}" />

            
<configuration configurationfile="src/main/resources/hibernate.cfg.xml" />

            
<hbm2ddl drop="true" create="true" export="true" outputfilename="helloworld-ddl.sql" delimiter=";" format="true" />

        
</hibernatetool>
    
</target>
  5,产生的ddl文件

    
alter table MESSAGES 
        
drop constraint FK_NEXT_MESSAGE;

    
drop table MESSAGES if exists;

    
create table MESSAGES (
        MESSAGE_ID 
bigint not null,
        MESSAGE_TEXT 
varchar(255),
        NEXT_MESSAGE_ID 
bigint,
        
primary key (MESSAGE_ID)
    );

    
alter table MESSAGES 
        
add constraint FK_NEXT_MESSAGE 
        
foreign key (NEXT_MESSAGE_ID) 
        
references MESSAGES;

Part2 反向工程(数据库描述文件到POJO和Mapping文件)
  1,Hibernate属性文件
#helloworld.db.xml
hibernate.dialect
=org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class
=org.hsqldb.jdbcDriver
hibernate.connection.url
=jdbc:hsqldb:hsql://localhost
hibernate.connection.username
=sa
hibernate.show_sql
=true
hibernate.format_sql
=true
  2,数据库描述文件
<!-- helloworld.reveng.xml-->
<?
xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering SYSTEM
    "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd"
>
<hibernate-reverse-engineering>
    
<table-filter match-name=".*" package="com.mingisme.ex.hello"/>
    
    
<table name="MESSAGES" schema="PUBLIC" class="Message">
    
        
<primary-key>
            
<generator class="increment" />
            
<key-column name="MESSAGE_ID" property="id" type="long" />
        
</primary-key>
        
        
<column name="MESSAGE_TEXT" property="text" />
        
<foreign-key constraint-name="FK_NEXT_MESSAGE">
            
<many-to-one property="nextMessage"/>
            
<set exclude="false" property="preMessages"/>
        
</foreign-key>
    
</table>
</hibernate-reverse-engineering>
  3,Ant任务配置
<target name="reveng.hbmxml">
        
<hibernatetool destdir="${basedir}/src/main/java">
            
<classpath path="${maven.build.output}"/>
            
<jdbcconfiguration propertyfile="src/main/resources/helloworld.db.properties" revengfile="src/main/resources/helloworld.reveng.xml" />

            
<hbm2hbmxml />
            
<hbm2cfgxml />
            
<hbm2java jdk5="true" />
        
</hibernatetool>
    
</target>
  4,产生的POJO文件
package com.mingisme.ex.hello;
// Generated Jun 3, 2007 9:46:48 PM by Hibernate Tools 3.1.0.beta5


import java.util.HashSet;
import java.util.Set;

/**
 * Message generated by hbm2java
 
*/
public class Message  implements java.io.Serializable {

    
// Fields    

     
private long id;
     
private Message nextMessage;
     
private String text;
     
private Set<Message> preMessages = new HashSet<Message>(0);

     
// Constructors

    
/** default constructor */
    
public Message() {
    }

    
/** full constructor */
    
public Message(Message nextMessage, String text, Set<Message> preMessages) {
       
this.nextMessage = nextMessage;
       
this.text = text;
       
this.preMessages = preMessages;
    }
    
   
    
// Property accessors
    public long getId() {
        
return this.id;
    }
    
    
public void setId(long id) {
        
this.id = id;
    }
    
public Message getNextMessage() {
        
return this.nextMessage;
    }
    
    
public void setNextMessage(Message nextMessage) {
        
this.nextMessage = nextMessage;
    }
    
public String getText() {
        
return this.text;
    }
    
    
public void setText(String text) {
        
this.text = text;
    }
    
public Set<Message> getPreMessages() {
        
return this.preMessages;
    }
    
    
public void setPreMessages(Set<Message> preMessages) {
        
this.preMessages = preMessages;
    }
}
   5,产生的Mapping文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!-- Generated Jun 3, 2007 9:46:47 PM by Hibernate Tools 3.1.0.beta5 -->
<hibernate-mapping>
    
<class name="com.mingisme.ex.hello.Message" table="MESSAGES" schema="PUBLIC">
        
<id name="id" type="long">
            
<column name="MESSAGE_ID" />
            
<generator class="increment"></generator>
        
</id>
        
<many-to-one name="nextMessage" class="com.mingisme.ex.hello.Message" fetch="select">
            
<column name="NEXT_MESSAGE_ID" />
        
</many-to-one>
        
<property name="text" type="string">
            
<column name="MESSAGE_TEXT" />
        
</property>
        
<set name="preMessages" inverse="true">
            
<key>
                
<column name="NEXT_MESSAGE_ID" />
            
</key>
            
<one-to-many class="com.mingisme.ex.hello.Message" />
        
</set>
    
</class>
</hibernate-mapping>

Part 3 其他,据说Mapping也可以产生POJO,但我没有做出来,报错: 要创建pojo的类找不到,非常奇怪.ant配置如下
<!--
    <target name="reveng.pojos"  description="Produces Java classes">
        <hibernatetool destdir="src/main/java">
            <classpath path="${maven.build.output}"/>
            
            <configuration>
                <fileset dir="src/main/java">
                    <include name="**/*.hbm.xml" />
                </fileset>
            </configuration>
            
            <hbm2java jdk5="true"/>
        </hibernatetool>
    </target>
    
-->



posted on 2007-06-03 03:05 MingIsMe 阅读(489) 评论(0)  编辑  收藏 所属分类: 06 J2EE

 
Powered by:
BlogJava
Copyright © MingIsMe