Hibernate3 学习(十一)

14从映像文件生成数据表

在您撰写好*.hbm.xml映射文件之后,您可以使用org.hibernate.tool.hbm2ddl.SchemaExport来自动建立数据库表格,假设您的User.hbm.xml如下:

User.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="onlyfun.caterpillar.User"

           table="user">    

                  

        <id name="id" column="id" type="java.lang.Integer">       

            <generator class="native"/>

        </id>

                

        <property name="name" column="name" type="java.lang.String"/>

 

        <property name="age" column="age" type="java.lang.Integer"/>

       

    </class>

 

</hibernate-mapping>

hibernate.cfg.xml中设定JDBC等相关设定:

hibernate.hbm.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

       "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

      

<hibernate-configuration>

 

    <session-factory>

 

        <!-- 显示实际操作数据库时的SQL -->

        <property name="show_sql">true</property>

        <!-- SQL方言,这边设定的是MySQL -->

        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- JDBC驱动程序 -->

        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

        <!-- JDBC URL -->

        <property name="connection.url">jdbc:mysql://localhost/demo</property>

        <!-- 数据库使用者 -->

        <property name="connection.username">caterpillar</property>

        <!-- 数据库密码 -->

        <property name="connection.password">123456</property>

        <!-- C3P0 连接池设定 -->

        <property name="c3p0.min_size">5</property>

        <property name="c3p0.max_size">20</property>

        <property name="c3p0.timeout">1800</property>

        <property name="c3p0.max_statements">50</property>

   

 

        <!-- 对象与数据库表格映像文件 -->

        <mapping resource="onlyfun/caterpillar/User.hbm.xml"/>

       

    </session-factory>

 

</hibernate-configuration>

可撰写一个程序如下:

HbmToTable.java

package onlyfun.caterpillar;

 

import org.hibernate.cfg.Configuration;

import org.hibernate.tool.hbm2ddl.SchemaExport;

 

public class HbmToTable {

    public static void main(String[] args) {

        Configuration config = new Configuration().configure();

        System.out.println("Creating tables...");

        SchemaExport schemaExport = new SchemaExport(config);

        schemaExport.create(true, true);

    }

}

运行程序之后,将会有以下的结果:

Creating tables...

 

10:39:10,203 DEBUG SchemaExport:143 - drop table if exists user

create table user (

    id integer not null auto_increment,

    name varchar(255),

    age integer,

    primary key (id)

)

10:39:10,203 DEBUG SchemaExport:161 - create table user (

    id integer not null auto_increment,

    name varchar(255),

    age integer,

    primary key (id)

)

10:39:10,359  INFO SchemaExport:173 - schema export complete

生成的资料表如下:

+--------+-----------------+------+------+----------+---------------------+

| Field  | Type       | Null | Key  | Default  | Extra        |

+--------+-----------------+------+------+----------+---------------------+

| id     | int(11)     |     | PRI  | NULL | auto_increment  |

| name   | varchar(255)| YES  |    | NULL |               |

| age    | int(11)     | YES  |    | NULL |               |

+--------+-----------------+------+------+----------+---------------------+

3 rows in set (0.00 sec)

15从数据表生成映像文件

可以从数据库的表格自动生成映像文件,首先 下载 Middlegen-Hibernate ,下载后将之解压缩。

这边所使用的数据库是MySQL,并假设您的数据库中已有以下的表格:

CREATE TABLE user (

    id INT(11) NOT NULL auto_increment PRIMARY KEY,

    name VARCHAR(100) NOT NULL default '',

    age INT

);

进入Middlegen-Hibernate解压缩后的config/database目录中,开启mysql.xml,修改当中的数据库配置相关讯息:

mysql.xml

<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.14-production-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/demo"/>

   <property name="database.userid"

             value="caterpillar"/>

   <property name="database.password"

             value="123456"/>

   <property name="database.schema"

             value=""/>

   <property name="database.catalog"

             value=""/>

   <property name="jboss.datasource.mapping"

             value="mySQL"/>

依照环境来配置

  • database.driver.file
  • database.driver.classpath
  • database.driver
  • database.url
  • database.userid
  • database.password

,预设上MySQLJDBC驱动程序要放在Middlegen-Hibernatelib目录下。

Middlegen-Hibernate使用Ant建构,您可以参考一下 Ant入门。

开启 Ant 的建构文件,在Middlegen-Hibernate目录下,修改成为实际的配置:

build.xml

build.xml

<?xml version="1.0"?>

....

 

<!DOCTYPE project [

    <!ENTITY database SYSTEM "file:./config/database/mysql.xml">

]>

 

 

<project name="Middlegen Hibernate" default="all" basedir=".">

 

<!-- project name="Middlegen Hibernate" default="all" basedir="." -->

 

   <property file="${basedir}/build.properties"/>

 

   <property name="name" value="HibernateDemo"/>

 

   ....

 

   <property name="build.gen-src.dir"             

            value="${build.dir}/gen-src"/>

   <property name="build.classes.dir"             

            value="${build.dir}/classes"/>

 

    ....

         <hibernate

            destination="${build.gen-src.dir}"

            package="onlyfun.caterpillar"

            genXDocletTags="false"

            genIntergratedCompositeKeys="false"

            javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"

         />

        

      </middlegen>

 

      <mkdir dir="${build.classes.dir}"/>

   </target>

 

    ....

  

</project>

第一个是设定所使用的数据库配置文件,请改为mysql.xml,第二个是设定应用程序名,第三个是设定自动产生文件的输出目录,第四个是设定您的package名称,其它目前采预设即可。

修改完成后,进入Middlegen-Hibernate的目录下,执行Ant建构,如果成功,将会出现以下的窗口:

依需求设定每一个字段选项,要设定属性的话,点选上面表格图标中的属性:

完成设定之后,按最上方的「Generate」按钮,即可产生文件,依我的文件设定,可以在Middlegen-Hibernate目录下的build/gen-src/找到所产生的映射文件,所产生的映射文件如下:

User.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

   

<hibernate-mapping>

<!--

    Created by the Middlegen Hibernate plugin 2.1

 

    http://boss.bekk.no/boss/middlegen/

    http://www.hibernate.org/

-->

 

<class

    name="onlyfun.caterpillar.User"

    table="user"

>

 

    <id

        name="id"

        type="java.lang.Integer"

        column="id"

    >

        <generator class="native" />

    </id>

 

    <property

        name="name"

        type="java.lang.String"

        column="name"

        not-null="true"

        length="100"

    />

    <property

        name="age"

        type="java.lang.Integer"

        column="age"

        length="11"

    />

 

    <!-- Associations -->

 

</class>

</hibernate-mapping>

 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值