hbm2java和hbm2ddl工具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbm2java和hbm2ddl工具相关的知识,希望对你有一定的参考价值。
hbm2java工具根据映射文件自动生成Java源文件,而hbm2ddl工具则根据映射文件自动生成数据库Schema,下面是这两种工具的使用:
1.建立Java工程,加入Jar包,创建创建hibernate配置文件以及响应的映射文件,相关jar包及工程目录如下:
2.相关文件代码如下:
build.xml:
1 <?xml version="1.0"?> 2 <project name="Learning Hibernate" default="prepare" basedir=""> 3 <property name="source.root" value="src"> 4 </property> 5 <property name="class.root" value="classes"> 6 </property> 7 <property name="lib.dir" value="lib"> 8 </property> 9 <property name="schema" value="schema"> 10 </property> 11 <path id="project.class.path"> 12 <!-- Include our own classes,of course --> 13 <pathelement location="${class.root}" /> 14 <!-- Include jars in the project library directory --> 15 <fileset dir="${lib.dir}"> 16 <include name="*.jar" /> 17 </fileset> 18 </path> 19 <target name="prepare" description="Sets up build structures"> 20 <delete dir="${class.root}"> 21 </delete> 22 <mkdir dir="${class.root}" /> 23 <copy todir="${class.root}"> 24 <fileset dir="${source.root}"> 25 <include name="**/*.properties" /> 26 <include name="**/*.hbm.xml" /> 27 <include name="**/*.cfg.xml" /> 28 </fileset> 29 </copy> 30 </target> 31 <!-- hbm2java任务--> 32 <target name="codegen" depends="prepare"> 33 <taskdef name="hbm2javaTask" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="project.class.path" /> 34 <hbm2javaTask destdir="${source.root}"> 35 <configuration configurationfile="${class.root}/hibernate.cfg.xml" /> 36 <hbm2java /> 37 </hbm2javaTask> 38 </target> 39 <!--编译Java源文件 --> 40 <target name="compile" depends="codegen" description="Compiles all java classes"> 41 <javac srcdir="${source.root}" destdir="${class.root}" debug="on" optimize="off" deprecation="on" includeAntRuntime="false"> 42 <classpath refid="project.class.path"> 43 </classpath> 44 </javac> 45 </target> 46 <!--hbm2ddl任务--> 47 <target name="schema" depends="compile"> 48 <taskdef name="hbm2ddlTask" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="project.class.path"> 49 </taskdef> 50 <hbm2ddlTask destdir="${schema.dir}"> 51 <configuration configurationfile="${class.root}/hibernate.cfg.xml" /> 52 <hbm2ddl export="true" console="true" create="true" drop="true" /> 53 </hbm2ddlTask> 54 </target> 55 </project>
hibernate.cfg.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6 <session-factory> 7 <property name="dialect">org.hibernate.dialect.mysqlDialect</property> 8 <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 9 <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> 10 <property name="connection.username">root</property> 11 <property name="connection.password"></property> 12 <property name="show_sql">true</property> 13 <mapping resource="cn/xieyuyan/Customer.hbm.xml" /> 14 </session-factory> 15 </hibernate-configuration>
customer.hbm.xml:
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <class name="cn.xieyuyan.Customer" table="CUSTOMERS"> 7 <id name="id" column="ID" type="int"> 8 <generator class="increment" /> 9 </id> 10 <property name="name" column="NAME" type="string" not-null="true" /> 11 <property name="email" column="EMAIL" type="string" not-null="true" /> 12 <property name="password" column="PASSWORD" type="string" 13 not-null="true" /> 14 <property name="phone" column="PHONE" type="string"></property> 15 <property name="address" column="ADDRESS" type="string"></property> 16 <property name="description" column="DESCRIPTION" type="text" /> 17 <property name="birthday" column="BIRTHDAY" type="date" /> 18 <property name="registeredTime" column="REGISTERED_TIME" 19 type="timestamp" /> 20 </class> 21 </hibernate-mapping>
3.运行项目:
run as,ant build,刷新项目,工程目录如下:
其中Customer.java即为根据映射文件生成的java源文件,classes目录下为编译后的classes文件
查看数据库,发现新生成了一个customers表,即为根据映射文件生成的数据库文件
以上是关于hbm2java和hbm2ddl工具的主要内容,如果未能解决你的问题,请参考以下文章
在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,依据hbm文件自己主动生成pojo和数据库脚本
如何在 mvn clean install 中配置 maven hbm2hbmxml 和 hbm2java 一个接一个地运行