<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 63  文章 - 0  trackbacks - 0
    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    在您撰寫好*.hbm.xml映射文件之後,您可以使用 net.sf.hibernate.tool.hbm2ddl.SchemaExportTask來自動建立資料庫表格,這邊所使用的方式是結合Ant進行自動化建構,首先我們假設將使用以下的User.hbm.xml:

    User.hbm.xml
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    
    <hibernate-mapping>
    <class name="onlyfun.caterpillar.User" table="USER">
    <id name="id" type="string" unsaved-value="null">
    <column name="user_id" sql-type="char(32)"/>
    <generator class="uuid.hex"/>
    </id>
    <property name="name" type="string" not-null="true">
    <column name="name" length="16" not-null="true"/>
    </property>
    <property name="sex" type="char" />
    <property name="age" type="int"/>
    </class>
    </hibernate-mapping>

     在這個映射文件中,<column/>標籤用於指定建立表格時的一些資訊,例如映射的表格欄位名稱,或是sql-type或 length等屬性,如果不指定這些資訊時,SchemaExportTask將自動使用Hibernate的類型至SQL類型等資訊來建立表格;sql -type用於指定表格欄位型態,not-null表示欄位不能為null,length則用於指定表格文字欄位長度,這些屬性的說明,都可以在 Hibernate參考手冊的表15.1找到。

     下面的build.xml用於Ant自動化建構時,生成資料庫表格之用:

    build.xml
    <project name="Hibernate" default="schema" basedir=".">
    <property name="source.root" value="src"/>
    <property name="class.root" value="classes"/>
    <property name="lib.dir" value="lib"/>
    <property name="data.dir" value="data"/>
    <path id="project.class.path">
    <!-- Include our own classes, of course -->
    <pathelement location="${class.root}" />
    <!-- Include jars in the project library directory -->
    <fileset dir="${lib.dir}">
    <include name="*.jar"/>
    </fileset>
    <pathelement path ="${classpath}"/>
    </path>
    <target name="schema" description="Generate DB schema from the O/R mapping files">
    <!-- Teach Ant how to use Hibernate's schema generation tool -->
    <taskdef name="schemaexport"
    classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask"
    classpathref="project.class.path"/>
    <schemaexport properties="${source.root}/hibernate.properties"
    quiet="no" text="no" drop="no" delimiter=";">
    <fileset dir="${source.root}">
    <include name="**/*.hbm.xml"/>
    </fileset>
    </schemaexport>
    </target>
    </project>

     <taskdef/>標籤定義一個新的任務schemaexport,相關的屬性設定是根據參考手冊的建議設定的,我們在這邊使用 hibernate.properties來告訴SchemaExportTask相關的JDBC資訊,quiet、text等屬性的定義,可以看參考手冊的表15.2。

     這個Ant建構檔案,會找尋src目錄下包括子目錄中有的*.hbm.xml,並自動根據映射資訊建立表格,我們還必須提供hibernate.properties(置於src下)來告知JDBC連接的相關訊息:

    hibernate.properties
    hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
    hibernate.connection.driver_class=com.mysql.jdbc.Driver
    hibernate.connection.url=jdbc:mysql://localhost/HibernateTest
    hibernate.connection.username=caterpillar
    hibernate.connection.password=123456

     這邊使用的是MySQL,請實際根據您所使用的資料庫設定dialect、驅動程式等資訊,在開始運行Ant使用SchemaExportTask進行自動表格建立之前,您要先建立資料庫,這邊的例子則是在MySQL中先建立HibernateTest:

    mysql> create database HibernateTest;
    Query OK, 1 row affected (0.03 sec)

     接著就可以運行Ant了,執行結果如下:

    ant
    Buildfile: build.xml
    schema:
    [schemaexport] log4j:WARN No appenders could be found for logger (net.sf.hiberna
    te.cfg.Environment).
    [schemaexport] log4j:WARN Please initialize the log4j system properly.
    [schemaexport] drop table if exists USER;
    [schemaexport] create table USER (
    [schemaexport]    user_id char(32) not null,
    [schemaexport]    name varchar(16) not null,
    [schemaexport]    sex char(1),
    [schemaexport]    age integer,
    [schemaexport]    primary key (user_id)
    [schemaexport] );
    BUILD SUCCESSFUL
    Total time: 5 seconds

     運行的過程中,我們可以看到建立表格的SQL語句,而自動建立好的資料庫表格資訊如下:

    mysql> DESCRIBE user;
    +---------+-------------+------+-----+---------+-------+
    | Field   | Type        | Null | Key | Default | Extra |
    +---------+-------------+------+-----+---------+-------+
    | user_id | varchar(32) |      | PRI |         |       |
    | name    | varchar(16) |      |     |         |       |
    | sex     | char(1)     | YES  |     | NULL    |       |
    | age     | int(11)     | YES  |     | NULL    |       |
    +---------+-------------+------+-----+---------+-------+
    4 rows in set (0.04 sec)

    更多有關SchemaExportTask的資訊,可以看看參考手冊的第15章工具箱指南的部份。

    posted on 2009-04-11 11:37 lanxin1020 閱讀(261) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 一级做a爰全过程免费视频| 色屁屁在线观看视频免费| 青柠影视在线观看免费| 亚洲天堂在线视频| 精品久久久久久国产免费了| 免费二级毛片免费完整视频| 国产亚洲精品仙踪林在线播放| 国产麻豆剧传媒精品国产免费| 亚洲国产精品ⅴa在线观看| 四虎www成人影院免费观看| 亚洲av永久无码精品网址| 国产又粗又长又硬免费视频| 猫咪免费观看人成网站在线| 国产亚洲色视频在线| 无码av免费网站| 亚洲av无码一区二区三区天堂古代 | 免费看香港一级毛片| 偷自拍亚洲视频在线观看| 亚洲日韩国产一区二区三区| a级在线观看免费| 精品亚洲成AV人在线观看| 一本岛高清v不卡免费一三区| 中文字幕无码精品亚洲资源网久久| 成年女人免费碰碰视频| 特级做a爰片毛片免费看| 亚洲精品自产拍在线观看| 日本人的色道免费网站| 久久久久亚洲AV无码去区首| 国产亚洲精品免费视频播放| 国产精品免费看久久久 | 亚洲精品无码av片| 久久亚洲AV无码西西人体| 91制片厂制作传媒免费版樱花| 2020国产精品亚洲综合网| 亚洲国产天堂久久久久久| 午夜免费福利小电影| 亚洲丰满熟女一区二区哦| 亚洲人成图片小说网站| 美女视频黄的全免费视频| 国产成人精品免费大全| 亚洲一区无码中文字幕乱码|