eclipse中SSH三大框架環境搭建<三>


  相關鏈接: 

  eclipse中SSH三大框架環境搭建<一>
  eclipse中SSH三大框架環境搭建<二>

  引言:通過上兩篇文章我們已經可以掌握struts2和spring的環境的搭建以及簡單使用,但是在訪問數據庫層面使用的是傳統的JDBC。在我們項目開發中使用JDBC確實是不太理想的,所以今天我給大家來講解一下目前行業中比較流行的持久層框架——hibernate。

  第1步:我們依舊需要引入hibernate的jar包

  找到hibernate解壓好的文件目錄,在該目錄下的lib目錄下有一個required目錄,將該目錄下的所有jar包引入到我們項目的lib目錄下。

  第2步:我們又要和配置文件打交道了,首先我們要配置一個在src目錄下的一個實體映射文件entityname.hbm.xml。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!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     <class name="entity.BookCard" table="BookCard">
 7         <id name="cid" column="cid"></id>
 8         <property name="name"  column="name" type="string" length="50" not-null="true"></property>
 9         <property name="sex" column="sex"></property>
10         <property name="cardDate" column="cardDate"></property>
11         <property name="deposit" column="deposit"></property>
12     </class>
13 </hibernate-mapping>

  解析:1>頭信息就不多說了,首先寫好一個hibernate-mapping首尾標記,在標記內映射我們相對應的實體類。

     2>在class標記的name屬性的值對應我們的實體類(全路徑),table屬性對應我們在數據庫的表名

     3>id標記為我們數據庫的主鍵配置相關信息,同理name屬性中的屬性值為我們實體類對象的屬性,column為數據庫對應表的字段。

     4>property標記中type屬性為該屬性對應的java數據類型,length為數據庫中指定長度這里相當於varchar(50),not-null屬性為指定該字段是否可以為空,默認可以為空。

  第3步:依舊是寫配置文件,配置連接數據庫相關信息的hibernate.cfg.xml文件

 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 
 6 <hibernate-configuration>
 7     <session-factory name="foo">
 8         <!-- 配置mySql連接參數 -->
 9          <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
10          <property name="connection.pool_size">5</property>
11          <property name="show_sql">true</property>
12          <property name="format_sql">true</property>
13          <property name="hbm2ddl.auto">update</property>
14          
15          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
16          <property name="connection.url">jdbc:mysql://localhost:3306/CardDB</property>
17          <property name="connection.username">root</property>
18          <property name="connection.password">123456</property>
19          
20          <mapping resource="BookCard.hbm.xml"/>
21     </session-factory>
22     
23 </hibernate-configuration>

  解析:1>配置一個hibernate-configuration首尾標記,在其內部插入session-factory首尾標記。

     2>在property標記中name屬性中指定dialect屬性值配置數據庫方言(數據庫不同以及版本不同方言也不同,查閱相關資料可知)

     3>在property標記中name屬性中指定connection.pool屬性值配置連接池大小(依據訪問頻率配置)

     4>在property標記中name屬性中指定show_sql屬性值配置是否顯示sql語句在控制台(開發過程中建議為true,易於調試)

     5>在property標記中name屬性中指定format_sql屬性值配置sql語句是否需要格式化(廢話,當然要)

    * 6>在property標記中name屬性中指定hbm2ddl.auto屬性值配置創表信息。值為update時,若數據庫沒有我們實體對應的表將自動為我們創建,若存在則會更新我的表。  值為create時,每次執行時會先查找數據庫是否存在這張表存在即先刪除在創建,不存在即直接創建。

     7>連接數據庫的驅動以及制定數據庫URL,用戶名和密碼相信大家都懂,我就不一一介紹了。

    * 8>我們的這份文件還需映射一個資源便是我們的實體映射文件,在mapping標記中指定。

  第4步:配置完以上文件才是我們hibernate真正為我們服務的時候了,編寫我們的dao來操作數據庫了。

 1 public class BookCardDaoImpl implements BookCardDao {
 2     
 3     @Override
 4     public List<BookCard> getAllCardInfo() {
 5         //sessionFactory這個實例可以自己按常規的hibernate傳統寫法創建(不建議)
 6         //可以交給spring去托管
 7         SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
 8         Session session = sessionFactory.openSession();
 9         //后面當使用JPA的時候,EntityManager 類似於 Session
10         Query query = session.createQuery("from BookCard");
11         
12         //這2行代碼,后期會交給spring的AOP幫忙處理
13         List<BookCard> list = query.getResultList();
14         
15         session.close();
16         sessionFactory.close();
17         return list;
18     }
19 }
View Code

  解析:通過上面的代碼我們可以明顯看出hibernate的實用性,我們的程序員再也不用寫獲取連接,獲取sql語句的執行對象等等,以及在代碼中我們都不需要關心該項目使用的是哪一個數據庫了,如此一來大大提高了我們的工作效率。

  頁面中的數據已經成功顯示

  控制台中執行的hibernate的sql語句也正常顯示出來了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM