天天看點

使用Hibernate生成資料表

Hibernate提供了從xml生成資料表的資料功能。

示例:

Studnet.hbm.xml:

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?&gt;</code>

<code>&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"</code>

<code>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;</code>

<code>&lt;</code><code>hibernate-mapping</code><code>&gt;</code>

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>id</code> <code>name</code><code>=</code><code>"id"</code> <code>type</code><code>=</code><code>"java.lang.String"</code><code>&gt;</code>

<code>&lt;</code><code>column</code> <code>name</code><code>=</code><code>"studentid"</code> <code>/&gt;</code>

<code>&lt;</code><code>generator</code> <code>class</code><code>=</code><code>"uuid"</code> <code>/&gt;</code>

<code>&lt;/</code><code>id</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"studentname"</code> <code>type</code><code>=</code><code>"java.lang.String"</code><code>&gt;</code>

<code>&lt;</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>/&gt;</code>

<code>&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</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>&gt;&lt;/</code><code>one-to-one</code><code>&gt;</code>

<code>&lt;/</code><code>class</code><code>&gt;</code>

<code>&lt;/</code><code>hibernate-mapping</code><code>&gt;</code>

Card.hbm.xml:

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>column</code> <code>name</code><code>=</code><code>"cardid"</code> <code>/&gt;</code>

<code>&lt;</code><code>generator</code> <code>class</code><code>=</code><code>"foreign"</code><code>&gt;</code>

<code>&lt;</code><code>param</code> <code>name</code><code>=</code><code>"property"</code><code>&gt;studentid&lt;/</code><code>param</code><code>&gt;</code>

<code>&lt;/</code><code>generator</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"cardname"</code> <code>type</code><code>=</code><code>"java.lang.String"</code><code>&gt;</code>

<code>&lt;</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>/&gt;</code>

<code>&lt;</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>&gt;&lt;/</code><code>one-to-one</code><code>&gt;</code>

hibernate.cfg.xml:

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>'1.0'</code> <code>encoding</code><code>=</code><code>'UTF-8'</code><code>?&gt;</code>

<code>&lt;!DOCTYPE hibernate-configuration PUBLIC</code>

<code>"-//Hibernate/Hibernate Configuration DTD 3.0//EN"</code>

<code>"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;</code>

<code>&lt;!-- Generated by MyEclipse Hibernate Tools.                   --&gt;</code>

<code>&lt;</code><code>hibernate-configuration</code><code>&gt;</code>

<code>&lt;</code><code>session-factory</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"hbm2ddl.auto"</code><code>&gt;update&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- Mysql --&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"dialect"</code><code>&gt;org.hibernate.dialect.MySQLDialect&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"connection.url"</code><code>&gt;jdbc:mysql://localhost:3306/struts&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"connection.username"</code><code>&gt;root&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"connection.password"</code><code>&gt;admin&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"connection.driver_class"</code><code>&gt;com.mysql.jdbc.Driver&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"myeclipse.connection.profile"</code><code>&gt;MySQL connection&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- Oracle --&gt;</code>

<code>&lt;!-- &lt;property name="connection.driver_class"&gt;oracle.jdbc.driver.OracleDriver&lt;/property&gt;</code>

<code>&lt;property name="connection.username"&gt;0804&lt;/property&gt;</code>

<code>&lt;property name="connection.password"&gt;0804&lt;/property&gt;</code>

<code>&lt;property name="connection.url"&gt;jdbc:oracle:thin:@192.168.0.200:1521:orcl&lt;/property&gt; --&gt;</code>

<code>&lt;!-- 配置JDBC裡batch的大小 --&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"jdbc.fetch_size"</code><code>&gt;50&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"jdbc.batch_size"</code><code>&gt;25&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- 配置事務實作方式 --&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"transaction.factory_class"</code><code>&gt;org.hibernate.transaction.JDBCTransactionFactory&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- 配置線程安全的session --&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"current_session_context_class"</code><code>&gt;thread&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"javax.persistence.validation.mode"</code><code>&gt;none&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- 顯示SQL --&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"show_sql"</code><code>&gt;true&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"format_sql"</code><code>&gt;true&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- 配置連接配接池 --&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.max_size"</code><code>&gt;2&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.min_size"</code><code>&gt;2&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.timeout"</code><code>&gt;5000&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.max_statements"</code><code>&gt;100&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.idle_test_period"</code><code>&gt;3000&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.acquire_increment"</code><code>&gt;2&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"c3p0.validate"</code><code>&gt;false&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;!-- 指定hibernate管理的映射檔案 --&gt;</code>

<code>&lt;</code><code>mapping</code> <code>resource</code><code>=</code><code>"com/mzsx/model/Card.hbm.xml"</code> <code>/&gt;</code>

<code>&lt;</code><code>mapping</code> <code>resource</code><code>=</code><code>"com/mzsx/model/Studnet.hbm.xml"</code> <code>/&gt;</code>

<code>&lt;!--</code>

<code>&lt;mapping resource="com/mzsx/model/Blog.hbm.xml" /&gt;</code>

<code>&lt;mapping resource="com/mzsx/model/Comment.hbm.xml" /&gt;</code>

<code>&lt;mapping resource="com/mzsx/model/Category.hbm.xml" /&gt;</code>

<code>&lt;mapping resource="com/mzsx/model/Link.hbm.xml" /&gt;</code>

<code>&lt;mapping resource="com/mzsx/model/Admin.hbm.xml" /&gt; --&gt;</code>

<code>&lt;/</code><code>session-factory</code><code>&gt;</code>

<code>&lt;/</code><code>hibernate-configuration</code><code>&gt;</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