`

Hibernate自动生成工具实例

阅读更多
作为一个优秀的持久层框架实现,Hibernate拥有比较完善的工具集,用于辅助Hibernate开发。
这些工具可以有效减少生成Hibernate基础代码和重构代码产生的重复劳动,从这些重复劳动中解脱出来,得以集中精力考虑系统架构和业务功能。
Hibernate工具主要以代码生成工具为主,比较有名的是Hibernate自带的hibernate-extensions,middlegen,Hibernate-Doclet和Hibernate Syschronizer
Hibernate基础代码包括POJO类,hbm映射文件,数据库定义。
通过Hibernate对JDBC的封装,Hibernate自动把对Object转化为对数据库的操作,持久层开发时所需要的代码数量已经大大减少。
两种持久层的建模方式:E-R建模和面向对象建模,无论两种方式在理念上有什么差异,使用Hibernate工具时,唯一的区别在于开发时工具使用顺序。

需要准备的开发环境:
开发工具:MyEclipse6.0.0 GA
数据库:Mysql5.0
JDBC库:mysql-connector-java-5.0.3-bin.jar
Hibernate:hibernate3.2

开发步骤:
1.Eclipse中新建Java项目hibernatetools,把需要的jar包拷贝到lib目录下,目录结构如下:

需要的库文件包括:Hibernate3.2核心jar包,log4j,middlegen需要的jar包,mysql驱动,servletapi开发包,struts核心jar包,velocity开发包
xdoclet开发包,commons-collections开发包
2.MiddleGen是一个开源的以数据库作为驱动的源代码生成引擎,基于JDBC,Velocity,Ant,XDoclet等工具,可以生成多种持久化层解决方案的
源代码。MiddleGen引擎擅长通过已有的数据库表结构生成访问这些数据库表的持久层代码和访问数据库的界面层代码。
对于Hibernate,MiddleGen不会生成POJO,只能生成Hibernate映射文件。
3.MiddleGen自身不提供可执行的程序,只能通过Ant来调用,创建Ant的build.xml文件
<project name="HibernateTool" default="middlegen" basedir=".">
	<!--应用名称-->
	<property name="name" value="airline"/>
	<property name="lib.dir" value="${basedir}/lib"/>
	<property name="src.dir" value="${basedir}/src"/>
	<property name="middlegen.home" value="${basedir}/lib"/>
	<property name="build.dir" value="${basedir}/build"/>
	<!--输出目录-->
	<property name="build.gen-src.dir" value="${build.dir}/gen-src"/>
	<!--数据库配置信息-->
	<property name="database.script.file"           value="./sql/${name}-mysql.sql"/>
	<property name="database.driver.file"           value="${lib.dir}/mysql-connector-java-5.0.3-bin.jar"/> 
	<property name="database.driver.classpath"      value="${database.driver.file}"/>
	<property name="database.driver"                value="com.mysql.jdbc.Driver"/>
	<property name="database.url"                   value="jdbc:mysql://localhost:3306/airline"/>
	<property name="database.userid"                value="root"/>
	<property name="database.password"              value="1234"/>
	<property name="database.schema"                value=""/>
	<property name="database.catalog"               value=""/>
	<property name="jboss.datasource.mapping"       value="mySQL"/>	
	
	<!-- 配置需要的库文件的classpath-->
	<path id="lib.class.path">
      <!-- The middlegen jars -->
		<fileset dir="${middlegen.home}">
			<include name="*.jar"/>
		</fileset>
    </path>
	<!-- 执行middlegen任务 -->
	<!-- middlegen任务完成对数据库连接和其他属性的设置 -->
	<!-- middlegen的Hibernate子任务完成根据得到的数据库定义生成映射文件 -->
	<target name="middlegen" description="Run middlegen" >
		<taskdef 
			name="middlegen" classname="middlegen.MiddlegenTask"
			classpathref="lib.class.path" 
		/> 
<!--
	gui属性:
		设置为true,那么在代码生成之前会跳出一个界面让你来配置数据库字段和生成文件之间的对应关系
-->
	    <middlegen
			 appname="${name}"
			 prefsdir="${src.dir}"
			 gui="true"
	    	 xmlprefs="true"
			 databaseurl="${database.url}"
			 driver="${database.driver}"
			 username="${database.userid}"
			 password="${database.password}"
			 schema="${database.schema}"
			 catalog="${database.catalog}"
	    >	
			<hibernate 
				destination="${build.gen-src.dir}"
		        package="com.pccw.test.dao"
		        genXDocletTags="true"
		        javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
			/>
		</middlegen>
	</target>
</project>



4.使用middlegen2.1中自带的例子中的数据库airline来做说明,数据库脚本代码:
--创建airline数据库
CREATE DATABASE airline;

DROP TABLE IF EXISTS reservations;
DROP TABLE IF EXISTS flights;
DROP TABLE IF EXISTS persons;

--创建人员表,记录乘客信息
CREATE TABLE persons(
 person_id INT NOT NULL,			--人员id
 first_name VARCHAR(32) NOT NULL,	--名
 last_name VARCHAR(32) NOT NULL,	--姓
 PRIMARY KEY( person_id )			--设置主键
) TYPE=INNODB;

--创建航班表,记录航班信息
CREATE TABLE flights(
 flight_id INT NOT NULL,			--航班id
 name VARCHAR(32) NOT NULL,			--航班名称
 departure_utc DATETIME NOT NULL,	--出发时间
 arrival_utc DATETIME NOT NULL,		--抵达时间
 PRIMARY KEY( flight_id )			--设置主键
) TYPE=INNODB;

--创建预约航班表
CREATE TABLE reservations(
 reservation_id INT NOT NULL,
 person_id_fk INT NOT NULL,
 flight_id_fk INT NOT NULL,
 registration_utc DATETIME NOT NULL,
 comment TEXT,
 PRIMARY KEY(reservation_id,person_id_fk,flight_id_fk),
 INDEX person_ind(person_id_fk),	--索引
 INDEX flight_ind(flight_id_fk),	--索引
 FOREIGN KEY (person_id_fk) REFERENCES persons(person_id),	--外键关联人员表
 FOREIGN KEY (flight_id_fk) REFERENCES flights(flight_id)	--外键关联航班表
) TYPE=INNODB;

INSERT INTO persons VALUES(1,'yong','fan');
INSERT INTO persons VALUES(2,'qing','yang');
INSERT INTO persons VALUES(3,'xingwu','gao');

5.开始运行middlegen任务,启动middlegen。middlegen有两种启动模式,通过设置gui(true,false)来控制。
一种是图形界面,在图形界面中可以修改生成代码所需要的属性,然后生成代码;
另一种不进行任何配置直接生成对应的代码。这里采用图形界面模式来启动,打开build.xml文件,单击右键执行Ant Build命令:
[img]http://fantasyyong.iteye.com/upload/picture/pic/6438/2c830c58-4c81-4995-85aa-386b828bb9a4.jpg [/img]
分享到:
评论

相关推荐

    Hibernate DAO生成器

    Hibernate DAO生成器是专门为Hibernate框架设计的工具,能够自动生成与数据库表对应的DAO类。这些DAO类包含了根据Hibernate的配置文件自动创建的CRUD(Create、Read、Update、Delete)方法,使得开发者可以直接调用...

    代码自动生成实例

    这个实例项目专注于根据数据库表自动创建实体类,这在Java开发中非常有用,因为实体类是ORM(对象关系映射)框架如Hibernate或MyBatis的基础。下面将详细介绍这个过程及相关技术。 首先,`freemarker.jar` 是一个...

    hibernate根据字段生成数据库表

    Hibernate 提供了一个非常实用的功能——基于实体类自动生成数据库表,这不仅能够显著提高开发效率,还能减少人为错误。本文将详细介绍如何利用 Hibernate 的 `SchemaExport` 类实现这一功能。 #### 二、准备工作 ...

    生成hibernate映射文件工具

    生成工具的工作原理大致如下: 1. 连接数据库:工具会首先连接到指定的数据库,获取数据库的元数据信息,如表名、列名、约束等。 2. 分析表结构:根据数据库中的表结构,工具会解析出每个表的字段类型、主键信息...

    Spring+Hibernate 自动映射

    标题中的“Spring+Hibernate 自动映射”是指在Java Web开发中,利用Spring框架与Hibernate ORM工具进行数据层的整合,实现对象关系映射(ORM)的自动化处理。这一技术结合了Spring的强大依赖注入(DI)和事务管理...

    hibernate反向生成数据库程序

    在实际项目中,开发者可能会进一步利用Hibernate的逆向工程功能,自动生成实体类和映射文件,以便更方便地进行数据库操作。这些实体类可以直接映射到数据库表,使得开发者可以专注于业务逻辑,而不用过多关注底层SQL...

    springmvc+hibernate+定时器配置实例

    Hibernate自动处理SQL语句生成和事务管理,使得数据库操作变得更加简单和透明。 **定时器** 在Java中,常见的定时任务实现有Java的ScheduledExecutorService或者Quartz库。定时器可以用来定期执行某个任务,例如...

    根据hibernate配置文件生成数据库.zip

    本压缩包“根据hibernate配置文件生成数据库.zip”包含了一些关键资源,帮助开发者理解如何使用Hibernate工具hbm2ddl自动生成数据库结构。以下是对这些资源的详细解释: 1. **使用Hibernate的工具hbm2ddl根据你的...

    Myeclipse生成Hibernate映射文件

    而MyEclipse作为一款强大的Java集成开发环境,提供了对Hibernate的良好支持,包括自动生成Hibernate映射文件的功能。本文将详细介绍如何在MyEclipse中创建和使用Hibernate映射文件。 首先,理解Hibernate映射文件...

    生成hibernate实体类

    2. **引入Hibernate工具**:Hibernate提供了一个名为`hibernatetool`的命令行工具,或者可以通过IDE插件(如Eclipse或IntelliJ IDEA的Hibernate插件)来实现实体类的自动生成。你需要在项目中添加Hibernate的相关...

    MyEclipse10.7由表自动生成Hibernate实体对象

    在使用MyEclipse 10.7开发JavaWeb项目时,开发者可以通过内置的MyEclipse Database Explorer工具,利用Hibernate反向工程功能,从数据库表自动生成对应的Hibernate实体类。这一过程极大地简化了数据库操作与Java对象...

    Hibernate实践例子程序

    2. Hibernate Extention,用来自动生成与那些*.hbm.xml对应的POJO,也就是根据那些对象关系映射的配置文件生成相应的class文件。 HibernateEx里面有一个hbm2java工具,就是用来根据些配置文件生成相应的POJO class。...

    hibernate入门实例操作步骤

    本篇将详细介绍Hibernate入门实例的操作步骤,包括手工配置文件和利用Eclipse自动生成配置的两种方法。 **一、手工配置文件** 1. **环境准备** 在开始前,确保已安装JDK、Eclipse IDE,并在项目中引入Hibernate的...

    MyEclipse 2014 使用hibernate3 生成数据库实体类 和 xml映射文件

    在MyEclipse 2014中,使用Hibernate 3进行开发的优势在于其集成的工具支持,可以便捷地创建和管理实体类以及XML映射文件。以下是一步一步的操作流程: 1. **配置Hibernate**:在项目中引入Hibernate 3的库,包括...

    java bean自动生成工具

    为了解决这个问题,开发者们发明了Java Bean自动生成工具,它可以自动根据数据库表结构生成对应的Java实体对象,大大提高了开发效率。 本文将详细介绍Java Bean自动生成工具以及如何使用"XlsToCode"这个特定的工具...

    MyEclipse自动生成hibernate映射文件

    ### MyEclipse自动生成Hibernate映射文件 #### 一、概述 在开发基于Java的Web应用时,ORM(对象关系映射)框架如Hibernate能够极大地提高数据持久化的效率及便捷性。MyEclipse是一款功能强大的集成开发环境,支持...

    购物车实例(struts+hibernate)

    开发者可以通过定义实体类和映射文件,让Hibernate自动处理SQL语句的生成和执行,减少了对底层数据库API的直接依赖。 在这个实例中,购物车的每个商品项可以视为一个实体,对应数据库中的一个记录。使用Hibernate,...

    自动代码生成器

    自动代码生成器是一种工具,它能够根据特定的模板和规则自动生成编程代码,极大地提高了开发效率,减少了重复劳动。在给定的“自动代码生成器”项目中,开发者已经进行了改进,使其支持指定实例命名空间,并能从...

Global site tag (gtag.js) - Google Analytics