day26HibernateDay01(框架的搭建 核心和基本檔案配置 基礎crud)
阿新 • • 發佈:2018-11-29
1、CRM CRM(Customer Relationship Management)客戶關係管理,利用相應的資訊科技以及網際網路技術來協調企業和客戶間在銷售、營銷和服務商的互動, 向客戶通過創新式的個性化的客戶互動和服務的過程。 其最終目標是將面向客戶的各項資訊和活動整合起來,組建一個以客戶為中心的企業,實現對面向客戶的活動的全面管理 2、CRM的模組 CRM系統熟悉了對企業銷售、營銷、服務等各階段的客戶資訊、客戶獲得進行統一管理 CRM系統功能涵蓋企業銷售、營銷、使用者服務等各各業務流程,業務流程中與客戶相關獲得都會在CRM系統統一管理 基本的功能模組 客戶資訊管理 聯絡人管理 商機管理 統計分析等 Hirbernate框架概述 1、Hibernate 是一個開放原始碼的物件關係對映(ORM)框架,對JDBC進行了非常輕量級的物件封裝,使得JAVA程式設計師可以使用物件程式設計思維來操縱資料庫 可以應用在任何使用JDBC的場合,既可以在Java的客戶端程式使用,也可以在Servlet/jsp的web應用中使用 是輕量級JAVAEE應用的持久層解決方案,是一個關係資料庫ORM框架 2、Hibernate是一個持久層的ORM框架 ORM對映 1、Object Relational Mapping O:面向物件領域的Object(JavaBean物件) R:關係資料庫領域的Relational(表的結構) M:對映Mapping(XML的配置檔案) 2、Hibernate通過操作物件的方式來操作資料庫表記錄 優點 對JDBC訪問資料庫的程式碼做了封裝,大大簡化了資料訪問層繁瑣的重複性程式碼 基於Jdbc的主流持久化框架,是一個優秀的orm實現,很大程度的簡化了dao層編碼工作 效能非常好,是一個輕量級框架,對映的靈活性很出色,支援很多關係型資料庫,從一對多到多對多的各種複雜關係 EJB:SUN公司提供編寫JavaEE的整體框架【重量級】 下載相應的jar包 http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/hibernate-release-5.0.7.Final.zip/download 建立類與表結構的對映 在JavaBean所在的包下建立對映的配置檔案 預設的命名規則為:實體類名.hbm.xml 在xml配置檔案中引入約束(引入的是hibernate3.0的dtd約束,不要引入4的約束) <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EB" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 如果不能上網,編寫配置檔案是沒有提示的,需要自己來配置 先複製"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"->window->preferences->搜尋xml->選擇 xml catalog ->add->選擇uri->貼上複製的地址->選擇location,選擇本地的DTD的路徑 hibernate-mapping-3.0.dtd Hibernate核心的配置檔案 hibernate-release-5.0.7.Final\project\etc 可以看hibernate.cfg.xml配置不同資料庫檔案的格式 1、下載Hibernate框架的開發包 2、編寫資料庫和表結構 3、建立WEB的專案,匯入了開發的jar包 MySQL驅動包、Hibernate開發的必須要有的jar包、日誌的jar包 4、編寫JavaBean,以後不使用基本資料型別,使用包裝類 5、編寫對映的配置檔案(核心),先匯入開發的約束、裡面正常配置標籤 6、編寫hibernate的核心的配置檔案。裡面的內容是固定的 7、編寫程式碼、使用的類和方法 Hibernate配置檔案之對映配置檔案 1、對映檔案,即Stu.hbm.xml的配置檔案 <class>標籤 用來將類與資料庫表建立對映關係 name 類的全路徑 table 表名(類名與表名一致,那麼table屬性也可以忽略) catalog 資料庫的名稱,基本都會省略不寫 <id>標籤 用來將類中的屬性與表中的主鍵建立對映,id標籤就是用來配置主鍵的 name 類中屬性名 column 類中的欄位名,(如果類中的屬性名和表中的欄位名一致,那麼column可以省略) length 欄位的長度,如果資料庫已經建立好了,那麼length可以不寫,如果沒有建立好,生成表結構時,length最好指定 <property> 用來將類中的普通屬性與表中的欄位建立對映 name 類中屬性名 column 表中的欄位名(如果類中的屬性名與表中的欄位名一致,那麼column可以省略) length 資料長度 type 資料型別(一般不需要寫,如果寫要按照規則來編寫) Hibernate的資料型別 type="string" Java的資料型別 type="java.lang.String" 資料庫欄位的資料型別 <column name="name" sql-type="varchar"/> 核心配置檔案 1、核心配置檔案的兩種方式 1、屬性檔案的形式,即properties的配置檔案 hibernate properties hibernate connection,driver_class =com.mysql.jdbc.Driver 缺點 不能載入對映的配置檔案,需要手動編寫程式碼去載入 2、XML檔案的形式,基本都會選擇這種方式 hibernate.cfg.xml <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 優點 格式比較清晰 編寫有提示 可以在該配置檔案中載入對映的配置檔案(最主要) 2、關於hibernate.cfg.xml的配置檔案方式 必須有的配置 資料庫連線資訊 hibernate.connection.driver_class 連線資料庫驅動程式 hibernate.connection.url 連線資料庫URL hibernate.connection.username 資料庫使用者名稱 hibernate.connection.password 資料庫密碼 方言 hibernate.dialect 操作資料庫方言 可選的配置 hibernate.show_sql 顯示sql hibernate.format_sql 格式化sql hibernate.hbm2ddl.auto 通過對映轉成DDL語句 create 每次都會建立一個新的表--測試的時候 create-drop 每次都會建立一個新的表,當執行結束之後,將建立的這個表刪除--測試的時候 update 如果有表,使用原來的表,沒有表,建立一個新的表,同時更新表結構 validate 如果有表,使用原來的表,同時校驗對映檔案與表中欄位是否一致如果不一致就會報錯 載入對映 如果xml方式<mapping resource="my/hibernate/domain/User.hbm.xml" Configuration類和作用 1、Configuration類 Configuration物件用於配置並啟動Hibernate Hibernate應用通過該物件來獲取物件-關係對映檔案中的元資料,以及動態配置Hibernate的屬性,然後建立SessionFactory物件 一句話:載入Hibernate的配置檔案,可以獲取SessionFactory物件 2、Configuration類的其他應用 載入配置檔案的種類,Hibernate支援xml和properties型別的配置檔案,在開發中基本都使用XML配置檔案的方式 如果才有properties的配置,那麼通過Configuration configuration = new Configuration(),就可以載入配置檔案 但是需要自己手動載入對映檔案 例如config.addResource("my/customer/Customer.hbm.xml"); 如果採用XML配置檔案 通過Configuration configuration = new Configuration().configure();載入配置檔案 SessionFactory 1、是工廠類,是生成Session物件的工廠類 2、SessionFactory類的特點 由Configuration通過載入配置檔案建立物件 SessionFactory物件中儲存了當前的資料庫配置資訊和所有對映關係以及預定義的SQL語句,同時,SessionFactory還負責維護Hibernate的耳機快取 預定義SQL語句 使用Configuration類建立了SessionFactory物件時,已經在SessionFactory物件中快取了一些SQL語句 建立的SQL語句是增刪改查(通過主鍵來查詢) 這樣做的目的是效率更高 一個SessionFactory例項對應一個數據庫,應用從該物件中獲取Session例項 SessionFactory是執行緒安全的,意味著一個例項可以被應用的多個執行緒共享 SessionFactory是重量級的,意味著不能隨意建立或銷燬它的例項。 如果只訪問一個數據庫,只需要建立一個SessionFactory例項,且在應用初始化的時候完成 SessionFactory需要一個較大的快取,用來存放預定義的SQL語句以及實體的對映資訊, 另外可以配置一個快取外掛,這個外掛被稱為Hibernate的二級快取,被多執行緒所共享 3、總結 一般應用使用一個SessionFactory,最好是應用啟動時就完成初始化 Session介面 1、概述 Session是Hibernate中使用的最頻繁的介面,也被稱之為持久化管理器,提供了和持久化有關的操作,比如新增、修改、刪除、載入和查詢實體物件 Session是應用程式與資料庫之間互動操作的一個單執行緒鍍錫,是Hibernate運作的中心 Session是執行緒不安全的 所有持久化物件必須在session的管理下才可以進行持久化操作 Session物件有一個一級快取,顯式執行flush之前,所有的持久化操作的資料都快取在session物件處 持久化類與Session關聯起來後就具有了持久化的能力 2、特點 不是執行緒安全的,應便面多個執行緒使用同一個Session例項 Session是輕量級的,建立和銷燬不會消耗太多的資源,應為每次客戶請求分配獨立的Session例項 Session有一個快取,被稱之為Hibernate的一級快取,每個Session例項都有自己的快取 3、常用的方法 save(obj) delete(obj) get(Class.id) update(obj) saveOrUpdate(obj) 儲存或者修改(如果沒有資料,儲存資料,如果有,修改資料) createQuery() HQL語句的查詢的方式 ("from Customer") Transaction介面 1、Transaction是事務的介面 2、常用的方法 commit() 提交事務 rollback() 回滾事務 3、特點 Hibernate框架預設情況下事務不自動提交,需要手動提交事務 如果沒有開啟事務,那麼每個Session的操作,都相當於一個獨立的事務