`
fs216
  • 浏览: 6620 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用Ant自动化发开Hibernate

    博客分类:
  • SSH
阅读更多
使用Ant自动化发开Hibernate
  在开发使用Hibernate框架应用程序中,无外乎要创建hibernate.cfg.xml,xxx.hbm.xml,pojos和databaseSchema这些文件,框架这东西刚开始学会的时候,都是心情舒畅,热情高涨,所有文件都是自己手写不管这样重复性的工作有多么的乏味,爱情都会由低潮期更别说重复Coding了,久而久之在编写一个个xml、pojo和schema的过程中,不由从心中产生一种不舒畅之气。我曾经有一段时间见到代码文件就有想吐的冲动,不过还好我还是挺过来,嘛也就是像爱情麻木期一样,怎么都无所谓了。直到最近了解到Ant这个工具,让我看到了另一种发开Hibernate应用程序的方式,并不是说这样的开发方式就一定好于纯手工编写,适合自己才是最好的,但我是一个比较爱偷懒的,自动化构建非常的吸引我。开头字数凑够了就进入正题了,首先直接上build.xml,这个文件是ant所需要的
<?xml version="1.0" encoding="UTF-8"?>

<project name="hibernatetools" basedir="." default="useHibernateTool">
   
    <!-- 导入build.properties文件,该文件定义一些常量,这些常量也可以是用<property name="" value="">的形式定义 -->
    <property file="build.properties"></property>
   
    <!-- 定义依赖包所在的位置,"${reference_libs_dir}"表示引用名为"reference_libs_dir"的常量 -->
    <path id="referencelib">
        <fileset dir="${reference_libs_dir}">
            <!-- 匹配模式,表示该目录下所有jar文件 -->
            <include name="**/*.jar"/>
        </fileset>
    </path>
   
    <!-- 自定义Ant Task,但是使用的自定义类为Hibernate为我们提供的 -->
    <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="referencelib"></taskdef>
   
    <!-- 使用hibernatetool -->
    <target name="useHibernateTool">
        <hibernatetool>
            <!-- 指定资源搜索位置 -->
            <classpath>
                <path location="${source_folder_dir}"></path>
                <path location="bin"></path>
            </classpath>
           
            <!-- 指定Hibernate的配置文件 -->
            <configuration configurationfile="${source_folder_dir}/hibernate.cfg.xml"/>
           
            <!-- 根据hbm生成java代码 -->
            <hbm2java jdk5="true" destdir="${source_folder_dir}"/>
            <!-- 根据hbm生成databaseSchema -->
            <hbm2ddl destdir="${database_schema_dir}" export="true" outputfilename="sqlStatement.sql" format="true"/>
        </hibernatetool>
    </target>
</project>
复制代码
build.properties文件:
source_folder_dir=src
reference_libs_dir=referencelibs
database_schema_dir=dbschema
复制代码
这是项目最开始的状态:

此时项目中仅仅只是定义了cfg和hbm文件,数据库schema和pojo都没有定义,"referencelibs"中存放的是该程序要成功需要的依赖库文件。运行Ant,此时项目的状态:

可以看到,我们的需要的pojo类和schema都生成好了,其实按照我的build.xml设置,数据库已经直接设置到了两张表了。验证器正确性:
Customer.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!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.beliefbetrayal.hibernate.pojos.Customer" table="customer">
            <!-- 主键设置 -->
            <id name="id" type="string">
                <column name="id"></column>
                <generator class="uuid"></generator>
            </id>
            <!-- 属性设置 -->
            <property name="username" column="username" type="string"></property>
            <property name="balance" column="balance" type="integer"></property>
           
            <set name="orders" inverse="true" cascade="all">
                <key column="customer_id" ></key>
                <one-to-many class="com.beliefbetrayal.hibernate.pojos.Order"/>
            </set>
        </class>
    </hibernate-mapping>
复制代码
Customer.java
package com.beliefbetrayal.hibernate.pojos;
// Generated 2012-2-8 1:10:59 by Hibernate Tools 3.3.0.GA

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

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

     private String id;
     private String username;
     private Integer balance;
     private Set<Order> orders = new HashSet<Order>(0);

    public Customer() {
    }

    public Customer(String username, Integer balance, Set<Order> orders) {
       this.username = username;
       this.balance = balance;
       this.orders = orders;
    }
  
    public String getId() {
        return this.id;
    }
   
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return this.username;
    }
   
    public void setUsername(String username) {
        this.username = username;
    }
    public Integer getBalance() {
        return this.balance;
    }
   
    public void setBalance(Integer balance) {
        this.balance = balance;
    }
    public Set<Order> getOrders() {
        return this.orders;
    }
   
    public void setOrders(Set<Order> orders) {
        this.orders = orders;
    }
}
复制代码
可以看到,我们借助Ant生成的POJO完全没问题。看看数据库Schema:
    create table customer (
        id varchar(255) not null,
        username varchar(255),
        balance integer,
        primary key (id)
    );

    create table orders (
        id varchar(255) not null,
        orderNumber varchar(255),
        cost integer,
        customer_id varchar(255),
        primary key (id)
    );

    alter table orders
        add index FKC3DF62E51E0069B1 (customer_id),
        add constraint FKC3DF62E51E0069B1
        foreign key (customer_id)
        references customer (id);
来自:http://www.cnblogs.com/beliefbetrayal/archive/2012/02/08/2342137.html
分享到:
评论

相关推荐

    Ant打包 Hibernate配置 实例

    在IT行业中,Ant和Hibernate是两个非常重要的工具,它们分别在构建管理...在提供的“HibernateNote”文件中,可能包含了更多关于如何在Ant中配置和使用Hibernate的详细信息,你可以进一步查阅这些资料来提升你的技能。

    ANT自动更新工具

    在本文中,我们将详细探讨如何有效地使用ANT自动更新工具。 首先,为了开始使用ANT,你需要将`ant`文件夹放置在计算机的根目录下,确保它与源代码位于同一磁盘内。接下来,设置系统环境变量`PATH`,例如添加`D:\ant...

    Ant自动打包用的.

    Ant是Apache软件基金会的一个开源项目,它是一款强大的构建工具,主要用在Java环境中,用于自动化构建、测试和部署软件。Ant基于XML来定义任务和目标,使得开发者可以编写可重复执行的构建脚本,实现软件项目的构建...

    Ant入门教程,使用Ant自动生成JAR文件

    **Ant入门教程——使用Ant自动生成JAR文件** Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程。它是Java开发中的一个重要工具,尤其在自动化构建、编译、测试和部署应用程序时。本教程将带你深入了解Ant...

    ant+struts2+hibernate

    【标题】"ant+struts2+hibernate"是一个集成开发环境,它结合了三个在Java Web开发中广泛使用的框架:Apache Ant、Struts 2和Hibernate。这个项目可能是为了展示或教学如何将这三个工具整合在一起,创建一个功能完善...

    android 使用ant自动打包apk

    以上就是使用Ant自动打包Android APK的基本流程。虽然现代的Android开发更多地转向了Gradle,但理解Ant构建原理对于开发者来说仍然有价值,特别是在处理旧项目或特定构建需求时。通过自定义Ant脚本,可以实现高度...

    android使用ant自动构建示例

    本示例将详细介绍如何在Android项目中利用Ant进行自动构建。 首先,我们需要理解Ant的基本概念。Ant是一个基于Java的任务驱动的构建系统,它的核心是build.xml文件,这个文件包含了构建项目的各种任务和规则。在...

    ant 自动发送邮件

    博文链接:https://liudaoru.iteye.com/blog/221684

    DBMonster In Action 使用Ant自动产生数据库随机测试数据

    标题中的“DBMonster In Action 使用Ant自动产生数据库随机测试数据”揭示了这是一个关于数据库测试的实践教程,其中涉及到了DBMonster工具和Ant自动化构建工具。DBMonster通常用于生成大量模拟真实世界的数据库记录...

    Ant结合Xdoclet 实例教程(之整合 Hibernate)

    通过这个实例教程,开发者不仅可以学习到如何使用Ant进行项目构建,还能掌握Xdoclet如何简化Hibernate的使用。这种整合方式在Java EE项目中非常常见,因为它极大地提高了开发效率,降低了出错的可能性。因此,对这些...

    一个使用ANT自动生成SSH简单功能的tool工具软件

    标题提到的是一个名为"tool"的工具软件,它利用了ANT技术来自动生成功能代码,特别是针对SSH(Struts2、Hibernate、Spring)这三种技术的集成应用。这意味着这个工具能够帮助开发者快速搭建基于SSH框架的项目,减少...

    ant自动发布工程

    通过熟练掌握这些Ant的使用技巧,开发者可以构建出高效、可靠的自动发布流程,使得Java工程的发布变得更加便捷和规范。对于大型项目而言,这种自动化发布策略显得尤为重要,因为它不仅可以节省时间,还能降低人为...

    jenkins+ant+jmeter自动化接口测试框架搭建

    JMeter起初设计时就支持使用Ant进行测试脚本的打包和构建,而Ant是一个广泛使用的Java库和命令行工具,用于自动化软件的构建和测试过程。而Jenkins是一个开源的自动化服务器,支持持续集成(CI)实践,能够自动执行...

    hcg.rar_ant hibernate po_pojo code g

    "hcg.rar_ant hibernate po_pojo code g" 提供的资源显然是一个利用Ant构建工具和Hibernate ORM框架,自动生成POJO(Plain Old Java Object)和Hibernate映射文件的过程。下面我们将详细探讨这两个关键概念以及它们...

    使用Ant进行java开发

    Ant的优势在于其灵活性和易用性,它使用XML(可扩展标记语言)来描述构建过程,这种描述性语言允许开发者定义编译源代码、运行测试、打包成JAR文件、部署到服务器等任务的具体步骤。 通过学习Ant,Java开发者可以...

    ant自动化发布脚本

    利用ant,自动化发布工程。具体过程包括:备份之前发布的工程,从svn checkout工程,编译工程,打包工程,关闭web服务器,删除已发布在web服务器的工程,复制打包的工程到web服务器,解压工程,启动web服务器。

    使用HibernateTools+Ant全自动生成实体类和数据库

    利用hibernate-Tools里的相关工具类,使得java实体类(POJO)、hbm映射文件、数据库表(Schema)之间可以相互转化。也就是说,只要有其中一样,就可以通过各种途径得到其它两样。如果手里已经有了其中一样东西,要想...

    自动化测试系列一 ANT

    【标题】:“自动化测试系列一 ANT” 在软件开发过程中,自动化测试是提高效率和质量的重要手段,而ANT作为Java平台上的构建工具,常被用于自动化测试。本文将深入探讨ANT在自动化测试中的应用及其基本原理。 ...

Global site tag (gtag.js) - Google Analytics