Hibernate 開發中,從現有資料庫表結構自動生成映射文件 (*.hbm.xml) 可大幅提升效率。本文以 MySQL 為例,詳細演示使用 Middlegen-Hibernate (基於 Ant) 完成逆向工程的完整配置與操作流程。
user:
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL DEFAULT '',
age INT
);
mysql-connector-java-3.0.14-production-bin.jar) 放入 Middlegen lib 目錄。編輯 config/database/mysql.xml,修改以下屬性:
<property name="database.driver" value="com.mysql.jdbc.Driver"/>
<property name="database.url" value="jdbc:mysql://localhost/demo"/>
<property name="database.userid" value="your_username"/>
<property name="database.password" value="your_password"/>
<property name="database.schema" value=""/>
<property name="database.catalog" value=""/>
編輯根目錄 build.xml:
<!ENTITY database SYSTEM "file:./config/database/mysql.xml"><property name="name" value="HibernateDemo"/><property name="build.gen-src.dir" value="${build.dir}/gen-src"/><hibernate> 任務關鍵屬性:
<hibernate
destination="${build.gen-src.dir}"
package="onlyfun.caterpillar"
genXDocletTags="false"
genIntegratedCompositeKeys="false"
javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
ant。build/gen-src/ 目錄生成映射文件,如 User.hbm.xml:
<hibernate-mapping>
<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"/>
</class>
</hibernate-mapping>
Hibernate 2 時代經典教學資源:JavaWorld Hibernate 專題