1. 創(chuàng )建項目
· 新建一個(gè)Java項目:HibernateBegin_3,注意選中“創(chuàng )建單獨的源文件夾和輸出文件夾”,同時(shí)添加“用戶(hù)庫”:hibernate。
2. 文件User.java
/* * 采用HibernateDoclet開(kāi)發(fā)一個(gè)簡(jiǎn)單的Hibernate實(shí)例 * 創(chuàng )建日期 2005-3-31 * @author javamxj(分享java快樂(lè )) * @link Blog: htpp://javamxj.mblogger.cn * htpp://blog.csdn.net/javamxj/ */package javamxj.hibernate;/** * @hibernate.class table = "UserTable3" */public class User { private int id; private String username; private String password; /** * @hibernate.id * column = "ID" * generator-class = "hilo" */ public int getId() { return id; } public void setId(int id) { this.id = id; } /** * @hibernate.property * length = "24" * not-null = "true" */ public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /** * @hibernate.property * column = "用戶(hù)名" * length = "24" * not-null = "true" */ public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }} · 添加類(lèi)標記“ @hibernate.class table ="UserTable3" ”用來(lái)生成數據庫的表UserTable3。
· “ @hibernate.id"用來(lái)生成主鍵,注意這里采用是hilo(高低位)生成器,需要額外的數據庫表保存主鍵生成歷史狀態(tài)。
· “ @hibernate.property”描述POJO中屬性與數據庫表字段之間的映射關(guān)系。
● 更新xdoclet-hibernate-module
· 將XDoclet1.2.2中的xdoclet-hibernate-module-1.2.2.jar復制到JBossIDE-1.4.1-e30\eclipse\plugins\org.jboss.ide.eclipse.xdoclet.core_1.4.1目錄中,并且刪除其目錄下的xdoclet-hibernate-module-1.2.1.jar文件,然后在eclipse界面中,窗口 ->首選項 ->JBoss-IDE ->XDoclet ->Code Assist:點(diǎn)擊右側的“Refresh XDoclet Data”欄,即可完成更新。如果要替換其它的模塊,步驟與此類(lèi)似。
3. 項目結構
· 將上篇文章中的“build.xml”復制到項目根目錄下,配置文件“hibernate.cfg.xml”復制到src目錄下,這時(shí)的項目結構如圖:
4. 運行任務(wù)
· 雙擊“generate-hbm”任務(wù),然后按一下“F5”功能鍵刷新一下包“javamxj.hibernate”,應該可以看到這個(gè)包下的“User.hbm.xml”。文件如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping
>
<class
name="javamxj.hibernate.User"
table="UserTable3"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
optimistic-lock="version"
>
<id
name="id"
column="ID"
type="int"
>
<generator class="hilo">
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-User.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>
<property
name="password"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="password"
length="24"
not-null="true"
/>
<property
name="username"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="用戶(hù)名"
length="24"
not-null="true"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-User.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
● 生成數據表
· 啟動(dòng)MySql,應該確定含有HibernateTest數據庫,不過(guò)這次不需要建立數據表了。
· 雙擊“schemaexport”任務(wù),然后刷新項目根目錄,會(huì )發(fā)現出產(chǎn)生的“schema-export.sql”文件。
schema-export.sql |
drop table if exists UserTable3 drop table if exists hibernate_unique_key create table UserTable3 ( ID integer not null, password varchar(24) not null, 用戶(hù)名 varchar(24) not null, primary key (ID) ) create table hibernate_unique_key ( next_hi integer ) insert into hibernate_unique_key values ( 0 ) |
· 切換到數據庫中,會(huì )發(fā)現已經(jīng)自動(dòng)產(chǎn)生了數據表usertable3和hibernate_unique_key:
5. 測試程序
好了,將上篇文章中的test.java文件復制到包“javamxj.hibernate”下,然后右擊運行這個(gè)文件,可以看到數據表中生成的數據(圖中的數據是連續運行4次后產(chǎn)生的)。
6. Log4j
Log4j是一個(gè)開(kāi)放源碼的項目。它允許開(kāi)發(fā)員以任意的間隔來(lái)控制日志的輸出。它通過(guò)設在外部的配置文件而達到運行時(shí)靈活的設置。
運行Log4j的庫文件都已經(jīng)放到先前建立的hibernate庫文件夾中了,你只要找到下載的hibernate 2.1.8壓縮文件中的etc目錄,復制其中的log4j.properties文件到項目中的src目錄即可。
運行test.java,可以看到控制臺的輸出語(yǔ)句似乎和先前沒(méi)有用Log4j沒(méi)有什么區別。
現在打開(kāi)log4j.properties,找到“log4j.logger.net.sf.hibernate=info”語(yǔ)句,將其改成“log4j.logger.net.sf.hibernate=warn”,再次運行test.java,可以看到控制臺的輸出語(yǔ)句只有兩條了
:
21:03:55,687 WARN Configurator:125 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/java/Hibernate/lib/ehcache-0.9.jar!/ehcache-failsafe.xml
Hibernate: insert into UserTable3 (password, 用戶(hù)名, ID) values (?, ?, ?)
警告信息是指緩存配置文件沒(méi)有找到,以后用到時(shí)再談?wù)勥@一點(diǎn)。
好了,hibernate結合Log4j的使用就是這么簡(jiǎn)單。
關(guān)于Log4j的使用,比較簡(jiǎn)單,網(wǎng)上的資料也很多,自己可以google一下。
小結:
Hibernate的開(kāi)發(fā)相當靈活,可以采用多種方式開(kāi)發(fā)。
· 只有Hbm映射文件:映射文件---hbm2java----java---SchemaExport----數據表
· 只有Java: java---XDoclet---Hbm----SchemaExport----數據表
· 如果只有數據表呢?可以采用Middlegen:
數據表---Middlegen---Hbm----hbm2java----java