一、Hibernate概述
hibernate核心內容是ORM(關系對象模型)度液。可以將對象自動的生成數(shù)據庫中的信息画舌,使得開發(fā)更加的面向對象堕担。這樣作為程序員就可以使用面向對象的思想來操作數(shù)據庫,而不用關心繁瑣的JDBC曲聂。所以霹购,hibernate處于三層架構中的D層(持久層)。
1朋腋、Hibernate可以使用在Java的任何項目中齐疙,不一定非要使用在Javaweb項目中膜楷。因為Hibernate不需要類似于tomact這些容器的支持,可以直接通過一個main方法進行測試贞奋。
2赌厅、通過下面的實例,可以發(fā)現(xiàn)使用Hibernate可以大大減少代碼量轿塔。
3特愿、由于使用了Hibernate,代碼中不涉及具體的JDBC語句勾缭,所以就方便了代碼的可移植性揍障。
(一)Hibernate的環(huán)境搭建非常簡單俩由,只需要引入Hibernate核心包(單擊下載)以及Hibernate依賴包(單擊下載)即可毒嫡。
(二)加入數(shù)據庫驅動。下面的例子中主要是采用Mysql數(shù)據庫來演示的采驻,所以在這里引入MysqL的JDBC驅動(點擊下載)审胚。
(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夾下即可)。其中的配置如下(針對mysql)
[html]view plaincopy
"-//Hibernate/Hibernate?Configuration?DTD?3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate_first
root
root
org.hibernate.dialect.MySQLDialect
該實例的目錄結構如下
說明:最后一個HIBERNATE3里面包含了所有的需要引用的jar包
1膳叨、新建一個普通的java項目,按照上面的步驟引入相關的jar包和配置文件
2痘系、建立User實體類
[java]view plaincopy
importjava.util.Date;
publicclassUser?{
privateString?id;
privateString?username;
privateString?password;
privateDate?createTime;
privateDate?expireTime;
publicString?getId()?{
returnid;
}
publicvoidsetId(String?id)?{
this.id?=?id;
}
publicString?getUsername()?{
returnusername;
}
publicvoidsetUsername(String?userName)?{
this.username?=?userName;
}
publicString?getPassword()?{
returnpassword;
}
publicvoidsetPassword(String?password)?{
this.password?=?password;
}
publicDate?getCreateTime()?{
returncreateTime;
}
publicvoidsetCreateTime(Date?createTime)?{
this.createTime?=?createTime;
}
publicDate?getExpireTime()?{
returnexpireTime;
}
publicvoidsetExpireTime(Date?expireTime)?{
this.expireTime?=?expireTime;
}
}
2菲嘴、提供User.hbm.xml文件,完成實體類的映射
[html]view plaincopy
"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
其中的property標簽是將要生成是數(shù)據庫表中的字段汰翠,在這里不用關心各個字段是什么類型的龄坪。因為Hibernate會根據上面的實體類中屬性的類型來決定將來表中字段的類型
3、配置hibernate.cfg.xml文件
[html]view plaincopy
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate_first
root
root
org.hibernate.dialect.MySQLDialect
注意:必須是“/”而不能是“.”复唤。
4健田、生成表:編寫工具類ExoprtDB.java,將hbm生成ddl
[java]view plaincopy
importorg.hibernate.cfg.Configuration;
importorg.hibernate.tool.hbm2ddl.SchemaExport;
/**
*?將hbm生成ddl
*?@author?BCH
*
*/
publicclassExoprtDB?{
publicstaticvoidmain(String[]?args)?{
//默認讀取hibernate.cfg.xml文件
Configuration?cfr?=newConfiguration().configure();
SchemaExport?export?=newSchemaExport(cfr);
export.create(true,true);
}
}
到這里就可以生成User表了,但是如果直接運行ExoprtDB.java文件是不能生成User表的佛纫。因為在mysql數(shù)據中還沒有建立數(shù)據庫Hibernate-first妓局。所以在mysql控制臺中通過create database hibernate-first; use hibernate-first;之后再執(zhí)行ExoprtDB.java文件就可以生成表了。
5呈宇、向表中添加數(shù)據
[java]view plaincopy
importjava.util.Date;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
publicclassClient?{
publicstaticvoidmain(String[]?args)?{
//讀取配置文件
Configuration?cfg?=newConfiguration().configure();
SessionFactory?factory?=?cfg.buildSessionFactory();
Session?session?=null;
try{
session?=?factory.openSession();
//開啟事務
session.beginTransaction();
User?user?=newUser();
user.setUsername("用戶名");
user.setPassword("123");
user.setCreateTime(newDate());
user.setExpireTime(newDate());
session.save(user);
//提交事務
session.getTransaction().commit();
}catch(Exception?e){
e.printStackTrace();
//回滾事務
session.getTransaction().rollback();
}finally{
if(session?!=null){
if(session.isOpen()){
//關閉session
session.close();
}
執(zhí)行該java文件就可以完成向表中增加數(shù)據了,效果如下
通過上面的代碼我們可以看出好爬,在代碼中沒有涉及到任何有關JDBC的代碼,作為開發(fā)人員只需要寫好相應的實體類甥啄,然后通過配置就可以實現(xiàn)了表的建立以及向表中實現(xiàn)數(shù)據的插入存炮。
在代碼中有許多Hibernate的核心對象,例如Configuration、SessionFactory穆桂、Session等等宫盔。這些內容將在以后介紹.
更多詳細源碼參考來源:http://minglisoft.cn/technology歡迎大家一起學習研究相關技術,源碼獲取請加求求(企鵝):2042849237