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目录下。
//重新排版,可能格式不太正确
<?xml version='1.0' encoding='GBK'?>
<!DOCTYPE hibernate-configuration    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>   
    <session-factory>        
    <!-- 是否将运行期生成的SQL输出到日志以供调试 -->        
    <property name="show_sql">true</property>                
    <!-- SQL方言,这里设定的是MySQL -->        
    <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>                
    <!-- JDBC驱动程序 -->        
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>                
    <!-- JDBC URL, "?useUnicode=true&amp;characterEncoding=GBK" 表示使用GBK进行编码 -->        
    <property name="connection.url">jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&amp;characterEncoding=GBK</property>                
    <!-- 数据库用户名 -->        
    <property name="connection.username">root</property>                
    <!-- 数据库密码 -->        
    <property name="connection.password">javamxj</property>        
    <!-- 指定User的映射文件 -->        
    <mapping resource="javamxj/hibernate/User.hbm.xml"/>           
    </session-factory>
</hibernate-configuration> 

·  在项目根目录下建立一个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>

Continue reading "Eclipse快速上手Hibernate-利用Hbm映射文件开发[转]"
Posted on January 27, 2007 5:07 PM | | Comments (3) | TrackBacks (0)

网上收集整理的一些资料:

1、
<property   name="hibernateProperties"> 
  <props> 
  <prop   key="hibernate.dialect"> 
  org.hibernate.dialect.MySQLDialect 
  </prop> 
  <prop   key="hibernate.hbm2ddl.auto">create</prop> 
  <prop   key="hibernate.show_sql">true</prop> 
  </props> 
</property>

Continue reading "从hbm文件生成ddl"
Posted on January 27, 2007 4:01 PM | | Comments (0) | TrackBacks (0)

1.简述
Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,提供HQL查询语言,使得Java程序员可以随心所欲的使用对象编程思维来操 纵数据库。使用Hibernate,必须为配置映射文件—ClassMapping File和Configuration File,现在市场上提供了诸多Hibernate代码生成工具,比如:XDoclet,以及Hibernate官方自带的sechmaExport工 具。然而它们都有如下的缺点:仅提供一些基本的输入模版,用户仍需要时间进行配置和修改;没有提供自动的持久类以及InvokeBean的代码生成;不支 持图形界面;不支持对HibernateTestCase的代码生成。

Hibernate工具具备以下特点:
1. 根据UML生成的数据库模型,自动生成映射文件。
2. 根据UML产生Hibernate持久类。
3. Hibernate模型检验。
4. 生成自动测试代码。
5. 与Eclipse集成

Hibernate 代码生成工具采用基于PowerDeigner的模型扩展功能来实现Hibernate的代码生成。 PowerDesigner(以下简称PD)是一款一流的数据库建模工具(E-R模型设计、物理模型设计),同时它对UML、报表、XML、团队开发(知 识库Repository)都支持的相当好,所有模型都可以正向、逆向的相互转换。PD的模型是由它的元模型组成。简单的说,元模型就是组成模型的模型。 基于这些元模型,PD提供了一套GTL开发语言,可以轻易地扩展出自己的代码模版和流程,也可以对现有的语言模型进行修改以适应需求;PD支持利用 VBScript来扩展语言、改变PD模型、模型检测。对于Eclipse,PD也能做到快速的集成并可以利用JAVA语言来修改PD模型。


注:GTL可以说是一种面向对象的脚本语言,它可以在不同的元模型上加以扩展,增加诸如:添加生成文件、原型、菜单、代码模版、扩展属性 等等功能,如图1所示,将在后续部分详细的阐述。由于元模型是面向对象的(比如所有的类、接口等的元模型都继承于Classifier元模型),即如果在 Classifier中扩展了一个功能,那么继承它的模型均拥有这样的功能和脚本,也可以覆盖重写这样的功能,以实现多态概念。


打开扩展模型编辑窗口:选择ModelExtended Model Definition,在弹出的窗口的Toolbar上选择Import Extended Model Definition(倒数第二个按钮)来加载已有的模型,也可以新建扩展模型(选择Add Row按钮,然后在表格中双击要编辑的模型的第一列即可弹出如图1所示的界面)


为了让读者更好的了解PD的元模型概念,截取了Hibernate代码生成工具所用到的元模型架构图,如图2所示。 读者可以在PD的安装目录下找到:<PD安装路径>\Examples\MetaModel.oom,图表存放在PdOOM下,名字为 Class Objects。
由于篇幅原因,会摘取典型的代码和模型来讲解如何设计Hibernate代码生成工具。

Hibernate代码生成的总体架构流程(活动图)


Hibernate自动生成文件的原则是:
1) 子类的映射信息挂在根类的映射文件下(Root Class),即子类将不独立生成代码
2) Value-Type类以及没有持久化的类,将不生成代码。
3) 不为非类对象生成代码(比如接口等)

其中:
Check Models in Diagram: Hibernate模型检测,判断DomainModel是否符合Hibernate语法。如果出错,PD将抛出错误提示信息(提供自动纠错的功能)
Generate Configuration File:选择模型属性(Model->Model Properties),用户可以在Extended Attribute下设置配置信息,PD会根据配置信息生成Configuration File。
Get each class in Diagram:这是PD的机制,它会自动获取UML内的所有模型元素,并根据每个模型的扩展属性(Profile\Generated File)的流程来生成代码文件。
Generate Basic Mapping:类的基本映射,它包含id,composite-id,propery等。
Get SubClass Style:子类的映射,递归获取。
Generate Join:当持久类对应于多张表的映射时,需要用Join来指明。
Generate Association Mapping:根据类之间Association的类型来判断是哪种关连映射,本工具支持one-to-one,one-to-many,many- to-one,many-to-many(根据Association Properties的Detail标签下的Multiplicity来设置),支持集合Array,Set,List,bag,idbag(根据 ContainType来设置)。
Get Java Code Information:扩展模型是基于现有的语言模型,即扩展模型能够获取语言模型的模版和各种设置,对于Hibernate的Java持久类,我们只 须在Java代码下增加对应Attribute的Getter和Setter即可。%source%
Generate Invoke Bean: 生成Hibernate的CRUD函数。
Generate Test Case: Hibernate测试用例代码,将生成的随机数据来验证Hibernate的正确性。
Generate Log4J: 生成Log4J的配置文件
Generate ANT build.xml: 当用户在Generation Files下的Options中设置Ant为True,并配置了Ant的Lib的路径,则Hibernate Tools会生成build.xml, 然后将会自动运行Ant来测试Hibernate, 生成结果将会被Log4J存入日志。

2.技术要点
O/R Mapping
PD从8.0开始,就不断加强O/R Mapping,除了代码模型的生成以外,PD也生成O/R Mapping的定义,诸如生成EJB CMP组件。用户可以定义O/R Mapping来建立OOM与PDM之间的关系。
PD支持3种方式的O/R Mapping:
第一种是从类图转换成数据模型之后由PD自动建立连接(适用于自顶向下的设计过程);
第二种是从数据模型转换成类图之后由PD自动建立连接(适用于自下向上的设计过程);
第三种是建立类图和数据模型之后由用户手动建立(适用于同步设计或者是后期的修改)
建立过程:
第 一种:选择类图,然后设计持久类(POJO),完毕之后,选择Tools->Generate Physical Data Model。在弹出的窗口中,选择Detail标签,选中O/R Mapping选项,即可。读者可以选择是更新现有的数据库还是新建数据库。
第二种:与第一种建立过程相似,只是换成在数据库模型中选择Generate Object-Oriented Model
第 三种:用户必须首先建立DataSource,在左边WorkSpace树形目录下找到类文件,然后右击选择New\Data Source,在弹出的窗口的Models标签中选择 ,并选择想与之关联的数据库模型。在类模型中打开类属性(双击要建立O/R Mapping的类),选择Mapping选项卡,点击 按钮添加刚才建立的DataSource。然后点击 添加类映射的数据表,即建立完毕。
用户可以添加多张表,它表示一个类可能对应多张表的映射,Hibernate的映射则应该用Join属性来指明。
注:当用户建立了ClassSource,PD会根据类的属性和表的字段自动建立AttributeMapping,当然用户也可以在AttributeMapping属性页下对其映射进行修改。
大家知道,Hibernate的映射文件必须包含对表的表述(比如:column,property属性等等),在PD中,通过元模型中的Mapping可以轻易地获取对应的表信息。图4是GTL中用到的O/R Mapping元模型。
O/R Mapping架构图:

架构说明:
1) Association:
在Asoociation 元模型中,可以通过Mappings来获取AssociationMapping(即用户在Mapping for下选择的DataSource),每个AssociationMapping都会有SourceClassifiers,它是 AsoociationSource标签内的映射集合,如图5所示。SourceClassifiers集合中的元素,也就是数据模型中的 Reference元模型,如图6所示。
由于PD可以在Association Mapping下添加数据模型中的其他Reference和Table,所以在做Hibernate代码生成时,采用了类型判断,以避免因类型不匹配而造成的错误。



☺实现代码(表映射):(注:附录部分将介绍部分GTL语法)
.


☺实现代码(referenceColumnHelper模版):


2) Class和Attribute
获取数据库模型的方法与Association类似,在O/R Mapping中,ClassMapping的SourceFeature等价于数据表; AttributeMapping的SourceFeature等价于数据表中的列信息。图7给出了在编写过程中使用到的数据库元模型的架构图。
☺实现代码(获取类对应的表信息)

说明:Mappings.First.ClassSources表明当前Data Source下的表集合
☺实现代码(获取Attribute对应的列信息)
例如:%AttributeMappings.First.SourceFeature.Code%
%AttributeMappings.First.SourceFeature%对应于图7的Column元模型。


Extended Attribute
Hibernate 生成工具中对于映射文件,难免要遇到大量的选项让用户选择或者输入,这时,我们就可以利用PD提供的Extended Attribute来扩展模型的属性。对于UML模型,除了Dependency和Generalization,其余模型均有Extended Attribute来扩展。
设置Extended Attribute步骤:进入扩展模型编辑窗口,在Profile下选择一个元模型,然后右键选择Extended Attribute, PD已提供了多种默认的选项(加括号的),当然用户增加自己的Extended Attribute Type(在Profile下的shared目录上按右键选择Extended Attribute Type,然后在右边可以设置列项内容以及默认值等等。设置完之后读者就可以在模型的扩展属性中引用到自定义的类型),如图8所示。在GTL中,可以用% 属性名%引用到当前用户的选择值,也可以用%模版名%引用到GTL模版(读者可以选择模版并按F12跳转)。


Check Model
考 虑,由于基于UML建立的DomainModel,对于Hibernate语法来说,难免有一些语法上的错误,比如:在两个类之间建立 Association,但对应的表之间却没有Reference,或者是有Reference却没有Joins下的Column,这时我们应该给出一个 错误警告,提示用户检查。
以刚才提到的AssociationCheck为例,将介绍如何实现用户自定义的Check。
打开Hibernate扩展模型,选中Profile\Association,右击选中New\Custom Check。在右边,读者可以看到有四个选项卡,如图9所示。


Check Script: 用于检测模型,%Check%=true, 将不出现错误信息。
Autofix Script: 用于自动修复模型错误,%Fix%=false, 表示不修复该错误。当PD监测到错误时,用户可以在错误上右键选择Automatic Correction即可。对于自动修复的错误,会在图标右下角加上一个”+”号,如 ,表示PD以根据Autofix Script修复完成。
Global Script: 用于存放全局函数,在任何元模型的Check Model均可调用。
实现代码
Check Script: 用于检测Refence的建立正确与否。


注:PD会对每个模型进行检测(包括Package),所以如果读者希望通过程序来控制该模型是否被检测,只须在满足条件的语法段内加上%Check% = True (表示验证正确并跳过)即可。

Persistent Class持久类
对 于POJO的持久类,必须为其每个类的属性增加Getter和Setter函数。扩展模型是基于语言模型之上的,也就是说,语言模型中的模板等内容均可在 扩展模型中覆盖和重写。所以,在Hibernate扩展模型中采用重载的方法,扩展了Java语言模型的代码生成,保留了原先Java那部分代码,并在扩 展模型中加上自己的Getter和Setter模版。
在Java语言模型中,代码生成是依靠%source%模版来完成Java代码的,同时有一 个%initializers%模版实现当完成Attribute之后的一些初始化工作,所以在相同位置(Class元模型)的地方重写了% initializers%模版,代码如下:

在Attribute元模型中增加getterFunction 、setterFunction模版,代码如下:

然后在Class元模型中增加持久类的Generated Files,并在模版编辑框内输入%source%即可。

Generated Files
PD 在每个元模型中提供了文件生成的功能。在Class元模型上右键选择Generated Files。在右边窗口中,在 File Name 下输入生成后的文件名。由于Hibernate映射文件的文件名与类名相同,故输入%mappingFilename%,同时建立 mappingFilename 模版,并输入%Code%.hbm.xml。
注:所有的元模型都继承于NamedObject (NamedObject继承于BaseObject),在NamedObject中存放了各种元模型的标准属性,比如:模型名称(Name)、代码名称 (Code)、注释、描述等等。所以,为了取到类的名称,就在类元模型下输入%Code%.hbm.xml,那么PD会根据代码名称为每个类建立相应的文 件(前提是该类可以被生成,即已持久化)。

Model
Model元模型中主要实现对 Configuration Mapping的连接信息的配置,诸如,JDBC等。所用到的方法也就是Extended Attribute和Mapping代码模版。由于篇幅原因,不一一列举,读者可以参考刚才所讲,或者可以在PD安装目录下运行pdvbs11.chm来 获取帮助。

Task
Task在代码生成完毕之后被激活,然后PD会依次序执行选中的任务。 扩展了Hibernate模型,增加了ANT的Lib路径,生成的目录名称等等选项。在Generation\ Options下建立新的选项即可,类似于Extended Attribute。调用Options选项时,输入如下代码:%GenOptions.选项名% 即可获取。
对于Task,希望能够借助ANT 的build.xml配置进行自动测试。在PD中,JAVA语言模型已经提供了ANT的build.xml的自动生成并预留接口 (customExecuteTarget、customerProperties、customTaskDefs三个模版) ,目的为了能让扩展模型来重载,有兴趣的读者可以查看Java语言模型(LanguageEdit Current Object Language,浏览Java::Profile\Model\Templates\Ant\antTemplate)。

建立Task:
在Generation\Tasks上右键,选择New。输入Task Name(就是真正执行的显示名),取名为Run Unit Test。在下面的表格中选择已建立的Command,如果没有建立,则可以在Commands上新建。
Run Unit Test Command代码:


说明:
.execute_command为宏命令,用于执行外部的程序。
.execute_command '(' <cmd> [',' <args> [',' <mode>]] ')'
第一个参数为主命令,这里是CMD
第二个参数为主命令的参数,这里是/K ANT.BAT JUNIT
第二个参数为管道类型,PD提供cmd_ShellExecute和cmd_PipeOutput两种方式。前者采用独立的进程方式,后者将会阻塞PD直到任务完成,并且结果将显示在PD的Output窗口内,如图10所示。


3.结束语
PowerDesigner 是一款灵活性非常强的软件建模工具,基于它的元模型,读者可以随心所欲的用不同语言 (GTL, VBScript, Java, C#等) 来设计出自己的代码生成工具,甚至是语言模型、报表等等。本篇仅仅起到了一个抛砖引玉的作用,我相信,凭借着领域中的经验,读者一定也可以设计出更适合自 己的代码生成工具,简化流程、降低成本、加快开发。

附录:
列举了GTL的部分语法,读者也可以参阅PD安装目录下的pdvbs11.chm文件或者Sybase官方网站。
1. 资源文件
读者可以参考PD11的现有模型:
您 可以在安装目录下\ Resource Files\Extended Model Definitions找到现有的扩展模型;在安装目录下\ VB Scripts找到VBScript代码;Ole Automation目录下找到如何用JAVA,C#等其他语言来获取元模型来做自己的代码生成工具;Library目录下找到语言模型。在 Printable Docs目录下找到PDF文档(建议参考Advanced User Documentation.PDF文档)。
2. 语法
a. 设置变量

变量名必须用%来封装,即%变量名%
全局变量

变量区域
简单的说,当区域建立后(比如,循环,另一个模版等),在区域中调用区域外的变量,则需要用Outer.变量名来指明。
b. 循环

c. 判断条件

d. 集合

e. 特殊符号

Posted on January 25, 2007 9:52 PM | | Comments (0) | TrackBacks (0)

一、建立数据库联结池

二、建立测试数据库

三、建立Hibernate配置

四、把数据库的表映射为类

五、模板中的包定义

六、设计模式:单例

七、设计模式:门面

八、设计模式:DAO

九、设计模式:MVC

十、自定义标签

十一、解决汉字编码问题

Continue reading "Struts+Hibernate模板开发笔记"
Posted on December 15, 2006 4:00 PM | | Comments (0) | TrackBacks (0)
工具:
Eclipse3.1、MyEclipse4.03、Tomcat5.5.9、Properties Editor插件、MySql4.1.13
 
新建工程:名称为 login
 
创建Struts框架
 
创建 index.jsp,增加一链接指向 login.jsp
 
按下Ctrl + N,创建 login.jsp、LoginAction,使用MyEclipse的向导就可以了,记得选对正确的版本
 
在ActionForm配置页中选择类型为动态Form,并继承于DynaValidatorForm,新增两个属性:username、 password,在创建jsp文件打上钩,将路径改为/login.jsp,然后下一步,改LoginAction的Input source改为/login.jsp,点击完成
 
按下Ctrl + N 创建一个forwards,记得选对正确的版本
name 输入 indexGo
路径选择 /index.jsp
Continue reading "Struts+Spring+Hibernate练习(完整)"
Posted on December 14, 2006 11:48 AM | | Comments (1) | TrackBacks (0)

  说明

  这个手册只是为初学者制作的环境配置和快速开发的一些基本方法,为的是广大爱好者能快速上手,少走我走过的弯路,里面没有任何关于java模式和其他相关的说明。本人水平有限,也没有能力去讨论关于模式设计和开发细节的一些内容。

  建议

  如果你还不清楚struts和hibernate的一些基本原理,希望能先去了解一下这方面的相关内容。

  推荐

  Hibernate中文手册》作者认为要学Hibernate看这个就足够了,里面几乎包括了所有的细节,不过可能不太适合快速入门。

  地址:http://www.hibernate.org/hib_docs/v3/reference/zh- cn/html_single/

  关于struts的资料就很多了,这里推荐一个可以下载一些入门教程的网站。

  地址:http://www.wnetw.com/jclub/index.jsp

  强烈建议入门的朋友先了解一下基本的原理!否则本文可能对你没有任何帮助。

Continue reading "MyEclipse+struts+Hibernate配置开发"
Posted on December 7, 2006 12:43 PM | | Comments (1) | TrackBacks (0)

1:下载Middlegen-Hibernate-r5
地址:URL http://voxel.dl.sourceforge.net/sourceforge/hibernate/Middlegen-Hibernate-r5.zip
2:解压缩
将下载的解压缩,如 D:\Middlegen-Hibernate-r5
3:配置数据库文件
进入D:\Middlegen-Hibernate-r5 目录下的\config\database 子目录,选择你要得数据库文件,我使用的是mysql.
将原来的
<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/>
改成
<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.15-ga-bin.jar"/>
同时指定数据库与用户名。我的配置如下(红色部分是要修改的部分)
<property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/>
<!--property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/-->
<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.15-ga-bin.jar"/>
<property name="database.driver.classpath" value="${database.driver.file}"/>
<property name="database.driver" value="org.gjt.mm.mysql.Driver"/>
<property name="database.url" value="jdbc:mysql://localhost/hibernate"/>
<property name="database.userid" value="root"/>
<property name="database.password" value=""/>
<property name="database.schema" value=""/>
<property name="database.catalog" value=""/>
<property name="jboss.datasource.mapping" value="mySQL"/>

将mysql的驱动程序mysql-connector-java-3.0.15-ga-bin.jar copy 到D:\Middlegen-Hibernate-r5\lib下

4:修改Build.xml
修改D:\Middlegen-Hibernate-r5目录下的build.xml 文件,此文件是Middlegen-Hibernate 的Ant
构建配置。Middlegen-Hibernate将根据build.xml 文件中的具体参数生成数据库表映射
文件

1)第24行 修改数据库连接
将hsqldb.xml 改成mysql.xml
<!ENTITY database SYSTEM "file:./config/database/mysql.xml">
2)第52行 修改输出目录
将${build.dir}/gen-src 改成你要的目录
<property name="build.gen-src.dir" value="D:/Middlegen-Hibernate-r5/sample"/>
3)第184行 对应代码的Package name
hibernate 节点package 属性的默认设置实际上是由前面的
Application Name (${name})和“.hibernate”组合而成,根据我们的需要,
将其改为
<hibernate
destination="${build.gen-src.dir}"
package="org.hibernate.sample"
genXDocletTags="true"
genIntergratedCompositeKeys="false"
javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
这里还有一个属性genXDocletTags,如果设置为true,则生成的代码将包含
xdoclet tag。
4)第33行 修改应用名
将原来的
<property name="name" value="airline"/>
改成
<property name="name" value="HibernateSample"/>

5:切换到D:\Middlegen-Hibernate-r5目录,运行ant

Posted on December 7, 2006 12:33 PM | | Comments (0) | TrackBacks (0)

使用Hibernate的一个不便之处就是要维护数据库schemahbm文件和java文件的一致性,而Middlegen可以帮助你完成这些。

Middlegen是一个基于Xdoclet的代码,配置文件自动生成工具。它支持目前流行的大部分的技术,例如EJBJDOHibernateTorqueJSP/Struts等。

Middlegen主要根据你已有的数据库Schema根据你的要求来自动的生成你所需要的文件,这大大的降低了开发难度,提高了开发速度。使用Middlegen的另一个显而易见的好处是你所有的代码可以在一分钟之内和数据库同步。

Continue reading "使用Middlegen简化Hibernate开发"
Posted on December 7, 2006 12:24 PM | | Comments (0) | TrackBacks (0)

I recently started using Eclipse as my development environment, in part because of its support for the many platforms on which I develop, and in part because Eclipse is a great example of the power of an open, extensible environment in which people all around the world can contribute. I'm beginning to investigate the extensions people have come up with. For example, I use a little plugin called XMLBuddy to work with XML files, and it's very helpful. So I became curious about whether anyone had written plugins to work with Hibernate, since I've done so much of that recently in putting together the Developer's Notebook. It turns out there are several such efforts underway; in this article we will explore one of them -- the Hibernate Synchronizer.

http://www.onjava.com/pub/a/onjava/2004/06/23/hibernate.html?page=1

Posted on December 7, 2006 12:02 PM | | Comments (0) | TrackBacks (0)

在java 的应用领域,有许多成熟的开源软件,利用它们一样可以打造优越、灵巧的应用框架,本文首先将先介绍 所要构建的系统结构和借助的开源产品。然后逐一讲解各开源软件的具体运用。希望本文能给那些正在学习这些 开源软件的同行提供参考。续该文之后笔者将结合这些开源软件,借助实际项目,做更深入的应用讲解。

Continue reading "用spring、Hibernate、Struts组建轻量级架构"
Posted on December 6, 2006 6:05 PM | | Comments (1) | TrackBacks (0)
上一页 1 2 3 4 下一页
相关内容
广告计划
最新评论
[评论] 鸿雁 : 默默地为他们祈祷吧
[评论] lym328 : 客源CRM非常不错-----如有需要可以了解
[评论] kevinwu : 作用肯定是有的,Google会首先搜索站
[评论] ss : 其实还真的感觉不到sitemap的作用~
[评论] kevinwu : 谢谢你的关注 :-)
[评论] h51h : 贵博客写得非常的好,界面简洁但内
[评论] snguo : 这里很好 来这里支持下呢?
[评论] redondo : 感谢你分享知识! 这篇文章我转载到
[评论] kevinwu : 就是这本;看来我买的贵了点 - 8折;我
[评论] 安妮 : 《Flex3.0 RIA开发详解:基于ActionScript3.0