<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
    主站蜘蛛池模板: 久久大香香蕉国产免费网站 | 337p日本欧洲亚洲大胆人人| 91福利免费视频| 亚洲精品视频在线| 久久免费观看国产精品| 亚洲最大成人网色| 亚洲一区二区免费视频| 亚洲国产精品成人精品小说| 在线视频精品免费| 91在线亚洲综合在线| 日韩免费一级毛片| 日日摸夜夜添夜夜免费视频| 亚洲欧洲日本在线| 免费视频成人手机在线观看网址| 亚洲人成77777在线播放网站| 国产在线精品观看免费观看| 国产亚洲精品岁国产微拍精品| 暖暖在线视频免费视频| 亚洲尹人香蕉网在线视颅| 免费看美女裸露无档网站| 亚洲精品乱码久久久久久V | 免费影院未满十八勿进网站| 亚洲高清中文字幕免费| 日韩中文无码有码免费视频 | 亚洲成AV人片在WWW色猫咪| 222www免费视频| 亚洲中文字幕无码久久| 又粗又硬又大又爽免费视频播放| 国产伦精品一区二区免费| 亚洲无删减国产精品一区| 好男人视频社区精品免费| 黄色网址在线免费观看| 亚洲一区二区三区首页| 暖暖免费高清日本中文| baoyu777永久免费视频| 亚洲一区无码中文字幕乱码| 全亚洲最新黄色特级网站 | 亚洲天堂中文字幕在线| 日韩免费高清大片在线| 亚洲av无码专区在线观看亚| 国产亚洲一区二区在线观看|