• 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表,即为根据映射文件生成的数据库文件

  • 相关阅读:
    LeetCode1:Two Sum
    LeetCode127:Word Ladder II
    LeetCode126:Word Ladder
    LeetCode128:Longest Consecutive Sequence
    LeetCode129:Sum Root to Leaf Numbers
    LeetCode130:Surrounded Regions
    LeetCode132:Palindrome Partitioning II
    LeetCode131:Palindrome Partitioning
    2014腾讯实习生招聘武汉试题
    React:受控组件与非受控组件混用实战
  • 原文地址:https://www.cnblogs.com/godwhisper/p/6794064.html
Copyright © 2020-2023  润新知