Ⅰ.Hibernate配置前提工做(E:\):
(一).解壓4個工具包
工具以下:apache-ant-1.6.2-bin.zip →→ apache-ant-1.6.2
hibernate-2.1.2.zip →→ hibernate-2.1
hibernate-extensions-2.1.3.zip →→ hibernate-extensions-2.1.3
Middlegen-Hibernate-r5.zip →→ Middlegen-Hibernate-r5
JDBC驅動
(二).瞭解Hibernate幾個基本概念:
①ORM object (java object) - relation( hibernate) -object(Dbo)
②POJO 無格式普通java對象
③XML 字描述很是強
④數據庫相關信息
Ⅱ.Hibernate配置
(一).得到數據庫鏈接信息
二種格式:
1>.文件名爲:hibernate.properties 位於 E:\hibernate-2.1\src
2>.文件名爲:hibernate.cfg.xml
注意: hibernate.properties 優先考慮。
運用工具1: hibernate-2.1.2.zip (Hibernate發行包)
⑴.用XMLwriter工具對hibernate.properties (鍵值對存放數據的)文件進行修改,步驟以下 :
①.用#進行註釋 (22-30行)
例: 22行 ## HypersonicSQL
24-30行 用#進行註釋
②.按 Ctrl+F 查找你要鏈接的數據庫 (如:jtds) 對其進行修改
116行 ## MS SQL Server
hibernate.dialect net.sf.hibernate.dialect.SQLServerDialect
hibernate.connection.username sa
hibernate.connection.password sa
138行 ## jTDS (not supported!)
hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver
hibernate.connection.url jdbc:jtds:sqlserver://localhost:1433/pubs
hibernate.jdbc.use_scrollable_resultset false
好的,第一步成功了!^_^!~
(二).映射信息 (擴展名爲:hbm.xml的文件)
運用工具2: Middlegen-Hibernate-r5.zip (用於生成hbm文件) 注意:它本身不能夠運行靠工具3生成
運用工具3: apache-ant-1.6.2-bin.zip (運行Middlegen的工具)
⑴.設置環境變量,在系統環境變量中添加名叫ant_home的變量,其值爲ant工具的根目錄 而且ant根目錄下的bin目錄放入path變量
1.新建環境變量(ant_home) E:\apache-ant-1.6.2
2.path E:\apache-ant-1.6.2\bin
測試:在DOS下 C:\Documents and Setting\Lab1>ant
Buildfile:build.xml does not exist!
Build failed 測試成功!~~
⑵.修改的XML以下:
⒈ build.xml 路徑:(E:\Middlegen-Hibernate-r5\build.xml)
①24行 <!ENTITY database SYSTEM "file:./config/database/mssql.xml">
②51行 <property name="build.gen-src.dir" value="D:\temp"/> 結果文件在哪產生
③158行 <table name="數據表名"/> 鏈接數據庫表名 (注:能夠創建很須要的表)
④185行 package="改本身的包名" 根據本身要求取包的名字
⒉選擇的數據庫 路徑:(E:\Middlegen-Hibernate-r5\config\database\*.xml)
如:mssql.xml
①8行 <property name="database.driver.file" value="${lib.dir}/jtds.jar"/>
②9行 <property name="database.driver" value="net.sourceforge.jtds.jdbc.Driver"/> 修改Driver
③10行 <property name="database.url" value="jdbc:jtds:sqlserver://localhost:1433/pubs"/>
修改URL
④11行 <property name="database.userid" value="sa"/>
⑤12行 <property name="database.password" value="sa"/>
⑥13行 <property name="database.schema" value="dbo"/>
⑦14行 <property name="database.catalog" value="pubs"/>
以上修改完後,須要注意的問題!
★特別注意:將你的JDBC驅動大集合\SqlServer\JTDS\jtds.jar 放入E:\Middlegen-Hibernate-r5\lib 裏面 就能夠了!~
⒊java object (java 對象)
工具4:hibernate-extensions-2.1.3 解壓到....注意目錄。
㈠:設置環境變量:
在系統變量中添加一變量名爲hibernate-home 其值爲hibernate發行包的跟目錄:E:\hibernate-2.1 注意格式。
在DOS下運行:
C:\Documents and Settings\lab1>e:
E:\>dir/w
E:\>cd E:\Middlegen-Hibernate-r5
E:\Middlegen-Hibernate-r5>ant
E:\>cd E:\hibernate-extensions-2.1.3\tools\bin
E:\hibernate-extensions-2.1.3\tools\bin>hbm2java 結果文件的完整路徑(*.xml) --output=java文件的存放目錄(與結果文件放在一塊兒)
生產java文件。
打開java文件;刪除導入的用於序列化的包,刪除最後的toString方法;
Ⅲ.Hibernate開發:
1 .將.xml .java文件拖放到SRC中同一包下
2.導入import java.io.*;
3.把hibernate發行包中的hibernate.properties拖放到SRC中去。
….導入jar包:E:\hibernate-2.1\lib\的全部.jar包
所鏈接的數據庫的JDBC的驅動包也要導入
hibernate發行包中的hibernate2.jar也要導入,
OK 配置完成 開始測試代碼:
package hello;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
public class Hibernate {
/**
* @param args
* @throws HibernateException
* @throws MappingException
* @throws HibernateException
*/
public static void main(String[] args) throws MappingException, HibernateException {
SessionFactory factory = new Configuration()
.addClass(hello.Admin.class).buildSessionFactory();
Session session = factory.openSession();
Admin admin = new Admin();
List list = session.find("from Admin");
for (int i=0; i<list.size(); i++) {
admin = (Admin) list.get(i);
System.out.println(admin.getName()+"\t"+admin.getPassword());
}
factory.close();
session.close();
}
}
!!!注意:
若是表沒有主鍵則必須重寫equals() 和hashCode()方法,有主鍵則沒必要。
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || !(o instanceof Admin))
return false;
Admin other = (Admin)o;
if (name == other.getName()) return true;
if (name == null) return false;
return name.equals(other.getName());
}
public int hashCode() {
if (name != null) {
return name.hashCode();
} else {
return super.hashCode();
}
}java