1. 使用Hibernate 導(dǎo)出數(shù)據(jù)庫(kù)表 (ExportDB.java 工具類) /** * 使用hibernate導(dǎo)出數(shù)據(jù)庫(kù)(由modle和hibernate配置文件生成數(shù)據(jù)庫(kù)表),但要先有數(shù)據(jù)庫(kù) */ package com.zoukang.usermgr.util;
import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB { public static void main(String[] args) { // 讀取hbiernate.cfg,xml文件 Configuration cfg = new Configuration().configure(); // 創(chuàng)建SchemaExport SchemaExport export = new SchemaExport(cfg); export.create(true, true); } }
2. 采用編程式異常: 1.getCurrensSession()和openSession()的區(qū)別? *采用getCurrentSession()方法創(chuàng)建的session會(huì)綁定到當(dāng)前線程中而 采用openSession()的方法創(chuàng)建的session不會(huì)綁定到當(dāng)前線程中 *采用getCurrentSession()創(chuàng)建的session會(huì)在commint或rollback后自動(dòng)關(guān)閉 而采用openSession()方法創(chuàng)建的session必須手動(dòng)關(guān)閉 2.使用getCurrentSEssion(0必須在hibernate.cfg.xml文件中進(jìn)行配置: *如果采用的是本地事務(wù)(JDBC事務(wù)) <property name="hibernate.current_session_cuntext_class">thread</property> *如果采用的是全局事務(wù)(JTA事務(wù)) <property name="hibernate.current_session_context_class">jta</property>
3.采用聲明式事務(wù): a.聲明式事務(wù)的配置 * 配置 SessionFactory * 配置事務(wù)管理器 * 事務(wù)傳播特性 * 哪些類哪些方法使用事務(wù) b.編寫業(yè)務(wù)邏輯方法 *
4。Hibernate自帶的分頁(yè)機(jī)制是什么?如果不使用Hibernate自帶的分頁(yè),則采用什么方式分頁(yè)? 1、hibernate自帶的分頁(yè)機(jī)制:獲得Session對(duì)象后,從Session中獲得Query對(duì)象。用Query.setFirstResult():設(shè)置要顯示的第一行數(shù)據(jù), Query.setMaxResults():設(shè)置要顯示的最后一行數(shù)據(jù)。 2、不使用hibernate自帶的分頁(yè),可采用sql語(yǔ)句分頁(yè), 如:5:為每頁(yè)顯示的記錄,2為當(dāng)前頁(yè): select * top 5 from table where tabId not in (select tabId top (2-1)*5 from table); 5。Hibernate核心接口: Hibernate的核心接口一共有5個(gè),分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個(gè)核心接口在任何開發(fā)中都會(huì)用到。通過這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這五個(gè)核心接口分別加以介紹。 ·Session接口:Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見的SQL語(yǔ)句。)。但需要注意的是Session對(duì)象是非線程安全的。同時(shí),Hibernate的session不同于JSP應(yīng)用中的HttpSession。這里當(dāng)使用session這個(gè)術(shù)語(yǔ)時(shí),其實(shí)指的是Hibernate中的session,而以后會(huì)將HttpSesion對(duì)象稱為用戶session。 ·SessionFactory接口:SessionFactroy接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory。 ·Configuration接口:Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。在Hibernate的啟動(dòng)的過程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory對(duì)象。 ·Transaction接口:Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開發(fā)人員也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。 ·Query和Criteria接口:Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢。它可以使用HQL語(yǔ)言或SQL語(yǔ)句兩種表達(dá)方式。
|
|