一膘壶、什么是Hibernate
Hibernate是一個優(yōu)秀的對象關(guān)系映射(ORM)框架错蝴。
如果你有使用純JDBC寫過一個類似博客之類的小程序的話,就知道編寫JDBC語句以及轉(zhuǎn)化結(jié)果集為Java對象是一件非常繁復的事情颓芭。利用Hibernate這樣的ORM框架顷锰,事情就非常簡單了。
Hibernate:冬眠亡问。對類進行實例化操作官紫,這里類指的是之前說的javabean,javabean正確的叫法:實體類 entity。
Hibernate是輕量級JavaEE應用的持久層解決方案束世,是一個關(guān)系數(shù)據(jù)庫ORM框架悼吱。
Hibernate具體實現(xiàn)的操作:
Hibernate的是開源輕量級的框架,對jdbc的代碼進行封裝良狈,程序員不需要寫底層的sql語句的代碼,就可以實現(xiàn)對數(shù)據(jù)庫的操作笨枯。實現(xiàn)對數(shù)據(jù)庫的crud操作薪丁。
Javaee中有三層結(jié)構(gòu)
Web層:struts2
Service層:spring
持久化層(dao層):hibernate框架
Hibernate是使用在持久化層的框架
Jdbc底層代碼的步驟:
1 加載驅(qū)動
2 創(chuàng)建連接
3 對sql語句進行預編譯操作
4 設置參數(shù),執(zhí)行sql語句
5 釋放資源
public class DatabaseConnection {
private final String DB_DRIVER = "com.mysql.jdbc.Driver";
private final String DB_URL = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8";
private final String DB_USER = "root";
private final String DB_PASS = "111111";
private Connection conn = null;
public DatabaseConnection() {
try {
Class.forName(DB_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection() {
return this.conn;
}
public void closeDB() {
if (conn != null) {
try {
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public class DatabaseConnectionTest {
public static void main(String[] args) {
DatabaseConnection dbc = new DatabaseConnection();
Connection conn = dbc.getConnection();
if (conn != null) {
System.out.println("Success...");
}
String sql = "select * from students";
try {
PreparedStatement ptmt = conn.prepareStatement(sql);
ResultSet rs = ptmt.executeQuery();
while(rs.next()) {
System.out.print("["+ rs.getString(1) + "|");
System.out.print(rs.getString(2) + "|");
System.out.print(rs.getString(3) + "|");
System.out.println(rs.getString(4) + "]");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
dbc.closeDB();
}
}
}
輸出結(jié)果:
Success...
[S0000001|張三豐|男|2015-06-24|武當山]
[S0000002|張無忌|男|2015-06-24|武當山]
[S0000004|李白|女|2015-06-06|西安長安區(qū)]
[S0000006|阿薩|女|2015-06-09|山西]
什么是ORM
ORM: object relational mapping , 對象關(guān)系映射
ORM 就是通過將Java對象映射到數(shù)據(jù)庫表馅精,通過操作Java對象严嗜,就可以完成對數(shù)據(jù)表的操作。做操作時候洲敢,有實體類 漫玄,有數(shù)據(jù)庫表 。
在hibernate中压彭,讓實體類和數(shù)據(jù)庫進行映射對應的關(guān)系(配置文件配置)睦优,
操作實體類就相當于操作數(shù)據(jù)庫表中的數(shù)據(jù)
其他主流的ORM框架技術(shù):
- MyBtis : 前身就是著名的iBatis
- Toplink:后被Oracle收購,并重新包裝為Oracle AS TopLink
- EJB:本身是JAVAEE的規(guī)范
Hibernate的優(yōu)點
- Hibernate對JDBC訪問數(shù)據(jù)庫的代碼做了封裝壮不,大大簡化了數(shù)據(jù)訪問層繁瑣的重復性代碼汗盘。
- Hibernate是一個基于jdbc的主流持久化框架,是一個優(yōu)秀的ORM實現(xiàn)询一,它很大程度的簡化了dao層編碼工作隐孽。
- Hibernate使用java的反射機制,而不是字節(jié)碼增強程序類實現(xiàn)透明性健蕊。
- Hibernate的性能非常好菱阵,因為它是一個輕量級框架。映射的靈活性很出色缩功。它支持很多關(guān)系型數(shù)據(jù)庫晴及,從一對一到多對多的各種復雜關(guān)系。
- Hibernate是一種能夠減少對SQL語句依賴掂之,可行的ORM框架技術(shù)抗俄。
寫SQL語句的缺點:
- 不同的數(shù)據(jù)庫使用的【SQL語法不同】。比如:PL/SQL(oracle數(shù)據(jù)庫)與T/SQL(微軟版本)世舰。
- 同樣的功能在不同的數(shù)據(jù)庫中有【不同的實現(xiàn)方式】动雹。比如分頁SQL。
- 程序過分依賴SQL對【程序的移植及擴展跟压,維護等】帶來很大的【麻煩】胰蝠。
二、Hibernate的版本
Hibernate 3.x 4.x 5.x
1、下載hibernate3.x的開發(fā)包 (3.6.10)
http://sourceforge.net/projects/hibernate/files/hibernate3/
2茸塞、hibernate tools for eclipse下載地址
http://sourceforge.net/projects/jboss/files/JBossTools/JBossTools4.1.x/hibernatetools-Update-4.1.2.Final_2014-03-18_15-46-19-B706.zip/download