學習Hibernate的第一部分(筆者一共會寫四部分)
今天開始學習SSH框架,雖然在網上看到有人評論說SSH不火了,學習SSM吧。 但是,我這個人比較老實(哈哈哈) 先從SSH開始吧(一起學習,一起努力)
1、今天學習了Hibernate的環境配置(我不知道為什麼那些網上下載jar包什麼的還需要CSDN積分(很煩).......)
先分享一下在後來我們需要用到的東西(網上找的) 其中作者只用到了裡邊的jar包 如果對下邊部落格內容有什麼問題的可以發訊息或者私聊我,我會回覆的。
連結: https://pan.baidu.com/s/1QmLyMyFAVpNI0pwqBtQbrg
開始今天的學習之路吧
--------------------------------------------------------------------------
首先,我們要知道兩個xml檔案的配置
第一個是: 類名+hbm+.xml 這個xml檔案應該放在與你要實現的那個類同一目錄下
比如(Customer與Customer.hbm.xml是同一目錄下)
(1)Customer.hbm.xml檔案下的內容是用來與資料庫中的資訊進行配對的(我在下面貼上Customer的程式碼)
1 <?xml version="1.0" encoding="UTF-8"?> 2Customer.hbm.xml<!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <!-- 建立類與表的對映 --> 7 <class name="Nuc.Test.Customer" table="cst_customer"> 8 <!-- id標籤建立類中的屬性與表中的主鍵對應 --> 9<id name="cust_id" column="cust_id"> 10 <generator class="native"/> <!-- 主鍵生成策略 --> 11 </id> 12 13 <!-- 建立類中的普通屬性和表的欄位的對應 --> 14 <property name="cust_name" column="cust_name"></property> 15 <property name="cust_source" column="cust_source"></property> 16 <property name="cust_industry" column="cust_industry"></property> 17 <property name="cust_level" column="cust_level"></property> 18 <property name="cust_phone" column="cust_phone"></property> 19 <property name="cust_mobile" column="cust_mobile"></property> 20 21 </class> 22 </hibernate-mapping>
在上邊Customer.hbm.xml的檔案配置中我們需要用到約束(我在下邊以圖片的形式展出<有點簡陋>)
------->
----->----->
在這裡邊你就找到你的約束了
(2)下邊我們來介紹hibernate.cfg.xml檔案,在這個檔案我們也用到了約束,只不過我們這次用的是下邊這個檔案下的
cfg與configuration對應(與上邊給出的一樣)
這個檔案是對資料庫中的url,username,password進行配置的
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6 <session-factory> 7 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 8 <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property> 9 <property name="hibernate.connection.username">root</property> 10 <property name="hibernate.connection.password">123456</property> 11 <!-- 第二部分: 配置hibernate資訊 可選的--> 12 <!-- 輸出底層sql語句 --> 13 <property name="hibernate.show_sql">true</property> 14 <!-- 輸出底層sql語句格式 --> 15 <property name="hibernate.format_sql">true</property> 16 <!-- hibernate幫建立表,需要配置之後 17 update: 如果已經有表,更新,如果沒有,建立 18 --> 19 <property name="hibernate.hbm2ddl.auto">update</property> 20 <!-- 配置資料庫方言 21 在mysql裡面實現分頁 關鍵字 limit,只能使用mysql裡面 22 在oracle資料庫,實現分頁rownum 23 讓hibernate框架識別不同資料庫的自己特有的語句 24 --> 25 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 26 27 <mapping resource="Nuc/Test/Customer.hbm.xml"/> 28 29 </session-factory> 30 </hibernate-configuration>hibernate.cfg.xml
在寫完這兩個xml檔案之後,我們就可以開始寫我們的程式碼了
(3)我們可以開始寫我們的HibernateDemo1類了 下邊附上程式碼(程式碼裡邊有解釋)
1 package Nuc.Test; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.cfg.Configuration; 7 import org.junit.Test; 8 9 /* 10 * Hibernate的入門案例 11 * @autor zsz 12 * */ 13 public class HibernateDemo1 { 14 @Test 15 //儲存客戶的案例 16 public void demo1(){ 17 //1.載入Hibernate的核心配置檔案 18 Configuration configuration = new Configuration().configure(); 19 20 //2.建立SessionFactory物件,類似JDBC中的連線池 21 SessionFactory sessionFactory = configuration.buildSessionFactory(); 22 23 //3.通過SessionFactory獲取Session物件,獲取JDBC中的Connection 24 Session session = sessionFactory.openSession(); 25 26 //4.手動開啟事務 27 Transaction transaction = session.beginTransaction(); 28 29 //5.編寫程式碼 30 31 Customer customer = new Customer(); 32 customer.setCust_name("張三"); 33 34 session.save(customer); 35 36 //6.事務提交 37 transaction.commit(); 38 39 //7.資源釋放 40 session.close(); 41 } 42 }HibernateDemo1
寫到這,已經晚上21.37了 今天開始學習的時間並不長,大概晚上8.30開始學習的(其中遇到好幾個BugQ=Q),不管怎麼說,自己收穫也很多
(4)說一下自己的Bug問題
4.1、我在寫程式碼過程中比較著急,沒有把類中的屬性與資料中的匹配好
4.2、還有在建立資料庫的時候主鍵如果是Int型別,一定要設定自動增加,一定要設定自動增加,一定要設定自動增加。
4.3、寫的時候一定要仔細,仔細,仔細
(5)貼一下自己的專案圖片,這樣有助於大家理解(是不是在這裡邊還能發現我的學校(嘻嘻) 說不定是一個學校的哦)
//2018.11.24 博主會持續更新的。