編輯:關於Android編程
hibernate是非常典型的持久層框架,持久化的思想是非常值得我們學習和研究的。這篇博文,我們主要以實例的形式學習Hibernate,不深究Hibernate的思想和原理,否則,一味追求,苦學思想和原理,到最後可能什麼也學不會,從實踐入手,熟能生巧,思想和原理自然而然領悟。
這篇博文,我們從實踐角度,動手搭建一個簡單的Hibernate實例。
一、開發環境
Win8 + jdk1.7 + MyEclipse + Tomcat5.0 + MySQL
說明:其實Hibernate是非常獨立的框架,根本不需要MyEclipse,Eclipse,Tomcat,Log4J等,他們只不過是能滿足我們其他的需求,才把他們引進來的。
二、下載文件
你需要Java SDK、 Hibernate包、和JDBC Driver。
1、Hibernate包下載地址:
http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc
2、JDBC Driver根據你的數據庫來定,一般database官網都有。Hibernate支持常用的數據庫,比如 MySQL, Oracle等等。這兩個數據庫是現在比較常用的,都有JDBC Driver:
Oracle JDBC Driver下載地址(下載前必須同意Oracle協議書)
http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html
MySQL JDBC Driver下載地址
mysql.com/downloads/connector/j/3.0.html">http://dev.mysql.com/downloads/connector/j/3.0.html
三、所需jar包
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxjb2RlPmhpYmVybmF0ZTMuamFyIEhpYmVybmF0ZbXEusvQxLD8PGJyIC8+DQpkb200ai0xLjYuMS5qYXIgZG9tNGq2wciheG1szsS8/rD8PGJyIC8+DQpteXNxbC1jb25uZWN0b3ItSmF2YS0zLjEuMTMtYmluLmphciBNeVNRTLXEamRiY8f9tq+w/DxiciAvPg0KSGliZXJuYXRltcTX99PDo7rIw87Sw8fS1MPmz/K21M/ztcS3vcq9u/LLvM6swLS/vMLH1PXDtM/yudjPtdDNyv2+3b/itObIocr9vt2ho8v80OjSqtPrz+DTprXEyv2+3b/itPK9u7XAo6zL+dLU0OjSqs/g06a1xGpkYmPH/bavoaPO0sPHtcRkYXRhYmFzZdPDtcTKx015U1FMo6zL+dLU0OjSqtL9yOtNeVNRTLXEamRiY8f9tq+hozxiciAvPg0KbG9nNGotMS4yLjExLmphciC8x8K8yNXWvr/yvNw8YnIgLz4NCtPJ09psb2c0arXEvMfCvMjV1r6xyGpka9fUtPi1xLzHwrzI1da+uabE3Lj8vNPDwLnbo6y88rWlo6zS18Xk1sPI1da+vLax8KOssePT2rX3ytSjrM7Sw8fRodTxyrnTw2xvZzRqoaM8L2NvZGU+PC9wPg0KPHA+PGNvZGU+sdjQ69Kq0v3I67XEamFyo7o8YnIgLz4NCmNvbW1vbnMtbG9nZ2luZy0xLjAuNC5qYXIgs+nP87XEyNXWvrzHwry/8rzcPGJyIC8+DQqxvsntsqLDu9PQyrXP1tXm1f21xNC0yNXWvsTcwaajqL+0sPy94bm5vLS/ydaqtcCjqbb4yse94brPxuTL/LXEyNXWvs+1zbPI50xvZzRqu/LV32phdmGxvsnttcRqYXZhLnV0aWwubG9nZ2luZ9f3zqrI1da+yuSz9tfpvP6jrMC0yrXP1sjV1r68x8K8tcS5psTcoaM8YnIgLz4NCmNvbW1vbnMtY29sbGVjdGlvbnMtMi4xLjFqYXIguPfW1ryvus/A4LrNvK+6z7mkvt/A4LXEt+LXsDxiciAvPg0KY2dsaWItMi4xLjMuamFyILavzKy0+sDto6xIaWJlcm5hdGXTw8v8wLTKtc/WUE/X1r3awuu1xLavzKzJ+rPJPGJyIC8+DQphc20uamFyIGNnbGli0OjSqtLAwLW1xGphcqOsQVNN19a92sLrv+I8L2NvZGU+PC9wPg0KPHA+PGNvZGU+16Kjutf3zqqz9dGn1d+yu8zhs6vV4tbW1/a3qKOs1rvQ6NKqvatoaWJlcm5hdGXL+dKq0sDAtbXEtdrI/be9amFysPy2vNL9yOu8tL/Jo6y38dTy1/bG5Mv7yrXA/cqxu+GxqE5vQ2xhc3NEZWZGb3VuZEVycm9ytcS07c7zo6y94r72t72wuKO61rvQ6L2rttTTpmphctL9yOu8tL/JoaPTydPa1eLKx9K7uPa88rWlyrXA/aOsvfa99tDo0qrS/cjr1eLQqWphcqGjPC9jb2RlPjwvcD4NCjxwPjxjb2RlPsvEoaK0+sLr1bnKvjwvY29kZT48L3A+DQo8cD48Y29kZT4xoaLU2klERdbQtLS9qGphdmHP7sS/o6ixyL3PvPK1pbK71NnR3cq+o6k8L2NvZGU+PC9wPg0KPHA+PGNvZGU+MqGitLS9qHNvdXJjZSBmb2xkZXKjrMP8w/vOqkhpYmVybmF0ZTOjrNTaSGliZXJuYXRlz8LU2M7EvP7W0NXStb3O0sPHy/nQ6NKqtcTI/bj2xeTWw87EvP66zcv509BqYXKw/KOsv72xtMv50OhqYXLOxLz+o6y5ub2o0sDAtbD8PC9jb2RlPjwvcD4NCjxwPjxjb2RlPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20161015/201610150947082342.png" title="\" />
3、提供hibernate.cfg.xml文件,完成基本配置
4、寫代碼
(1)建立實體類User.java
package com.liang.hibernate;
import java.util.Date;
public class User {
private String id;
private String name;
private String password;
private Date createTime;
private Date expireTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
(2)提供User.hbm.xml文件,完成實體類映射
(3)將User.hbm.xml文件加入到hibernate.cfg.xml文件中
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate_first
root
123456
org.hibernate.dialect.MySQLDialect
(4)編寫工具類ExportDB.java,將hbm生成ddl,也就是hbm2ddl
package com.liang.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/**
* 將hbm生成ddl
* @author liang
*
*/
public class ExportDB{
public static void main(String[]args){
//默認讀取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
////生成並輸出sql到文件(當前目錄)和數據庫
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
測試之前,要提前建立數據庫hibernate_first,測試如下:
控制台打印的SQL語句:
drop table if exists User
create table User (id varchar(255) not null, name varchar(255), password varchar(255), createTime date, expireTime date, primary key (i
數據庫表結構:
(5)建立客戶端類Client,添加用戶數據到mySQL
package com.liang.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Client {
public static void main(String[]args){
//讀取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
//建立SessionFactory
SessionFactory factory =cfg.buildSessionFactory();
//取得session
Session session = null;
try{
//開啟session
session = factory.openSession();
//開啟事務
session.beginTransaction();
User user = new User();
user.setName("jiuqiyuliang");
user.setPassword("123456");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//保存User對象
session.save(user);
//提交事務
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
//回滾事務
session.getTransaction().rollback();
}finally{
if(session != null){
if(session.isOpen()){
//關閉session
session.close();
}
}
}
}
}
右鍵debug運行,測試完成之後,我們查詢一下測試結果:
5、為了在調試過程中能觀察到Hibernate的日志輸出,最好加入log4j.properties配置文件、在CLASSPATH中新建log4j.properties配置文件或將該配置文件拷貝到src下,便於程序調試。
內容如下:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
配置完成後,項目結構如下圖所示:
五、最後
從上面的簡單實例可以看到,我們只是使用Hibernate對User這一個實體進行了映射,比較簡單,但是完全不符合實際。如何像關系型數據庫一樣表示多種關聯關系,例如:一對一,一
對多,多對多等等,我們還需要深入。下篇博文,我們介紹Hibernate的基本映射原理以及關聯關系映射。
系統對四大組件的過程進行了很大程度的封裝,日常開發中並不需要了解底層的工作原理,那麼研究這些原理的意義在哪裡呢?如果你想在技術上更進一步,那麼了解一些系統的工作原理是十分
第8節 橫屏的播放界面在設備旋轉成橫屏的時候,視頻將自動進行全屏播放。8.1 播放器橫屏布局我們要為全屏播放界面設置一個新的布局,這個布局裡面只用來播放視頻,不需要顯示任
前提條件:已經安裝了JDK 6.0、android SDK、NDK r9和eclipsele4.2開發環境.推薦下載Android開發的綜合套件adt-bundle-wi
1 背景上路了,准備開始重操那兩年的舊業,後悔之前在上家公司做Amlogic和Realtak方案盒子時沒有養成寫博客的習慣,這算是開篇之作吧,順帶也算是給一個網友的答疑吧