Hibernate提供了從xml生成資料表的資料功能。
示例:
Studnet.hbm.xml:
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?></code>
<code><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"</code>
<code>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"></code>
<code><</code><code>hibernate-mapping</code><code>></code>
<code><</code><code>class</code> <code>name</code><code>=</code><code>"com.mzsx.model.Student"</code> <code>table</code><code>=</code><code>"student"</code> <code>catalog</code><code>=</code><code>"struts"</code><code>></code>
<code><</code><code>id</code> <code>name</code><code>=</code><code>"id"</code> <code>type</code><code>=</code><code>"java.lang.String"</code><code>></code>
<code><</code><code>column</code> <code>name</code><code>=</code><code>"studentid"</code> <code>/></code>
<code><</code><code>generator</code> <code>class</code><code>=</code><code>"uuid"</code> <code>/></code>
<code></</code><code>id</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"studentname"</code> <code>type</code><code>=</code><code>"java.lang.String"</code><code>></code>
<code><</code><code>column</code> <code>name</code><code>=</code><code>"studentname"</code> <code>length</code><code>=</code><code>"50"</code> <code>not-null</code><code>=</code><code>"true"</code> <code>/></code>
<code></</code><code>property</code><code>></code>
<code><</code><code>one-to-one</code> <code>name</code><code>=</code><code>"cardid"</code> <code>class</code><code>=</code><code>"com.mzsx.model.Card"</code> <code>cascade</code><code>=</code><code>"all"</code> <code>></</code><code>one-to-one</code><code>></code>
<code></</code><code>class</code><code>></code>
<code></</code><code>hibernate-mapping</code><code>></code>
Card.hbm.xml:
<code><</code><code>class</code> <code>name</code><code>=</code><code>"com.mzsx.model.Card"</code> <code>table</code><code>=</code><code>"card"</code> <code>catalog</code><code>=</code><code>"struts"</code><code>></code>
<code><</code><code>column</code> <code>name</code><code>=</code><code>"cardid"</code> <code>/></code>
<code><</code><code>generator</code> <code>class</code><code>=</code><code>"foreign"</code><code>></code>
<code><</code><code>param</code> <code>name</code><code>=</code><code>"property"</code><code>>studentid</</code><code>param</code><code>></code>
<code></</code><code>generator</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"cardname"</code> <code>type</code><code>=</code><code>"java.lang.String"</code><code>></code>
<code><</code><code>column</code> <code>name</code><code>=</code><code>"cardname"</code> <code>length</code><code>=</code><code>"50"</code> <code>not-null</code><code>=</code><code>"true"</code> <code>/></code>
<code><</code><code>one-to-one</code> <code>name</code><code>=</code><code>"studentid"</code> <code>class</code><code>=</code><code>"com.mzsx.model.Student"</code> <code>></</code><code>one-to-one</code><code>></code>
hibernate.cfg.xml:
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>'1.0'</code> <code>encoding</code><code>=</code><code>'UTF-8'</code><code>?></code>
<code><!DOCTYPE hibernate-configuration PUBLIC</code>
<code>"-//Hibernate/Hibernate Configuration DTD 3.0//EN"</code>
<code>"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"></code>
<code><!-- Generated by MyEclipse Hibernate Tools. --></code>
<code><</code><code>hibernate-configuration</code><code>></code>
<code><</code><code>session-factory</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"hbm2ddl.auto"</code><code>>update</</code><code>property</code><code>></code>
<code><!-- Mysql --></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"dialect"</code><code>>org.hibernate.dialect.MySQLDialect</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"connection.url"</code><code>>jdbc:mysql://localhost:3306/struts</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"connection.username"</code><code>>root</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"connection.password"</code><code>>admin</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"connection.driver_class"</code><code>>com.mysql.jdbc.Driver</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"myeclipse.connection.profile"</code><code>>MySQL connection</</code><code>property</code><code>></code>
<code><!-- Oracle --></code>
<code><!-- <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property></code>
<code><property name="connection.username">0804</property></code>
<code><property name="connection.password">0804</property></code>
<code><property name="connection.url">jdbc:oracle:thin:@192.168.0.200:1521:orcl</property> --></code>
<code><!-- 配置JDBC裡batch的大小 --></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"jdbc.fetch_size"</code><code>>50</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"jdbc.batch_size"</code><code>>25</</code><code>property</code><code>></code>
<code><!-- 配置事務實作方式 --></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"transaction.factory_class"</code><code>>org.hibernate.transaction.JDBCTransactionFactory</</code><code>property</code><code>></code>
<code><!-- 配置線程安全的session --></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"current_session_context_class"</code><code>>thread</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"javax.persistence.validation.mode"</code><code>>none</</code><code>property</code><code>></code>
<code><!-- 顯示SQL --></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"show_sql"</code><code>>true</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"format_sql"</code><code>>true</</code><code>property</code><code>></code>
<code><!-- 配置連接配接池 --></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.max_size"</code><code>>2</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.min_size"</code><code>>2</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.timeout"</code><code>>5000</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.max_statements"</code><code>>100</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.idle_test_period"</code><code>>3000</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.acquire_increment"</code><code>>2</</code><code>property</code><code>></code>
<code><</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.validate"</code><code>>false</</code><code>property</code><code>></code>
<code><!-- 指定hibernate管理的映射檔案 --></code>
<code><</code><code>mapping</code> <code>resource</code><code>=</code><code>"com/mzsx/model/Card.hbm.xml"</code> <code>/></code>
<code><</code><code>mapping</code> <code>resource</code><code>=</code><code>"com/mzsx/model/Studnet.hbm.xml"</code> <code>/></code>
<code><!--</code>
<code><mapping resource="com/mzsx/model/Blog.hbm.xml" /></code>
<code><mapping resource="com/mzsx/model/Comment.hbm.xml" /></code>
<code><mapping resource="com/mzsx/model/Category.hbm.xml" /></code>
<code><mapping resource="com/mzsx/model/Link.hbm.xml" /></code>
<code><mapping resource="com/mzsx/model/Admin.hbm.xml" /> --></code>
<code></</code><code>session-factory</code><code>></code>
<code></</code><code>hibernate-configuration</code><code>></code>
TableTest:
<code>package</code> <code>com.mzsx.test;</code>
<code>import</code> <code>org.hibernate.cfg.Configuration;</code>
<code>import</code> <code>org.hibernate.tool.hbm2ddl.SchemaExport;</code>
<code>public</code> <code>class</code> <code>TableTest {</code>
<code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>
<code>Configuration configuration=</code><code>new</code> <code>Configuration().configure();</code>
<code>SchemaExport sc=</code><code>new</code> <code>SchemaExport(configuration);</code>
<code>sc.create(</code><code>true</code><code>, </code><code>false</code><code>);</code>
<code>}</code>
執行的結果:
<code>drop</code> <code>table</code> <code>if exists struts.card</code>
<code>drop</code> <code>table</code> <code>if exists struts.student</code>
<code>create</code> <code>table</code> <code>struts.card (</code>
<code>cardid </code><code>varchar</code><code>(255) </code><code>not</code> <code>null</code><code>,</code>
<code>cardname </code><code>varchar</code><code>(50) </code><code>not</code> <code>null</code><code>,</code>
<code>primary</code> <code>key</code> <code>(cardid)</code>
<code>)</code>
<code>create</code> <code>table</code> <code>struts.student (</code>
<code>studentid </code><code>varchar</code><code>(255) </code><code>not</code> <code>null</code><code>,</code>
<code>studentname </code><code>varchar</code><code>(50) </code><code>not</code> <code>null</code><code>,</code>
<code>primary</code> <code>key</code> <code>(studentid)</code>
版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任
本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1305504