程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> ssh(sturts2_spring_hibernate) 框架搭建之hibernate1,搭建springhibernate

ssh(sturts2_spring_hibernate) 框架搭建之hibernate1,搭建springhibernate

編輯:JAVA綜合教程

ssh(sturts2_spring_hibernate) 框架搭建之hibernate1,搭建springhibernate


一、hibernate簡單了解:

   ⑴、hibernate一個java領域裡面的一個持久化的ORM框架。

     持久化:就是對對象的數據修改,hibernate會把修改的數據同步到數據庫中。

     ORM:Object Relation Mapping 對象關系映射。把數據庫中的表映射成java中的一個個對象(POJO),然後hibernate通過對對象的操作來對表進行操作。 

   ⑵、hibernate是對數據數據庫的進一步的封裝,hibernate的底層還是JDBC。 

 二、hibernate搭建:

   在之前,我們已經搭建好了struts2和spring的環境,現在在這二者的基礎之上對數據庫進行進一步的封裝,也就是在項目中加入hibernate。

   ⑴、首先,下載hibernate 下載地址:http://hibernate.org/orm/ ,下載完解壓後:hibernate-release-5.2.2.Final—>>lib—>>required,找到這個目錄中的所有jar包復制到項目中即可。同時在同級目錄中有其他的jar可以適當的了解,比如:optional目錄中有c3p0的jar,後面數據庫連接池需要使用到。

    

   ⑵、編寫hibernate.cfg.xml文件:

     ①、在你的項目src目錄下添加一個hibernate.cfg.xml文件,文件名可以任意,但需是XXX.cfg.xml類型。

     ②、聲明dtd:(根據你下載的版本來確定dtd。)

<!DOCTYPE hibernate-configuration 
PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

     ③、具體編寫hibernate.configuration

<hibernate-configuration>

  <!--設置sessionFactory-->   <session-factory> <!-- 配置相關的數據庫基本信息 --> <!-- 數據庫驅動 --> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <!-- 數據庫訪問路徑 --> <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName = webLastExam_20160727</property> <!-- 登錄用戶名 --> <property name="connection.username">sa</property> <!-- 登錄密碼 --> <property name="connection.password">password</property> <!-- 配置hibernate的基本信息 --> <!-- 配置hibernate使用的數據庫方言 --> <property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
<!-- 設置數據庫連接池的大小 --> <property name="connection.pool_size">5</property>
<!-- 執行操作時候是否在控制台打印sql語句 --> <property name="show_sql">true</property> <!-- 是否進行格式化sql語句,指的是在控制台中輸出的sql語句是否換行 --> <property name="format_sql">true</property> <!--生成數據表的策略--> <property name="hbm2ddl.auto">update</property> <!-- 設置hibernate的映射文件 --> <mapping resource="entity/BookCard.hbm.xml"/>
</session-factory> </hibernate-configuration>

       ·這裡配置的session-Factory中的數據庫信息本來實在util.MyConnectionImp中定義的,如果在util.MyConnectionImp定義好數據的信息,那麼用戶的數據庫一切換就要修改這裡的代碼,所以需要把這個獲取連接的事情交給hibernate去管理,這樣就避免了直接修改代碼,只要修改配置文件即可。

       ·這裡需要設置的屬性有:

        數據庫驅動、數據庫訪問路徑、用戶名、密碼、數據庫方言、連接池大小、hibernate的映射文件(後面會講)等。  

        其中  <property name="hbm2ddl.auto">update</property> 這個屬性如果設置為create,那麼之前的數據庫中的數據在電腦開機之後刪除。

 

   ⑶、編寫hibernate的映射文件- entityName.hbm.xml :

      ①、聲明dtd:根據你下載的版本來確定dtd。)

<!DOCTYPE hibernate-mapping 
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

      ②、編寫hibernate-mapping

<hibernate-mapping>

    <class name="entity_name" table="tabel_name">

        <id name="entity_prop_name" type="integer" >
            <column name="column_name"></column>
            <generator class="native" />
        </id>
        <property name="entity_prop_name" type="string"> 
        <column name="column_name"></column> 
     </property>    
    
      </class>
</hibernate-mapping> 

          ·其中,class標簽中的name屬性值對應需要映射的實體類的名字,並且是 "包名.類名" 形式。table屬性則是需要通過映射這個實體類到數據庫中的表名。

          ·其次,id標簽設置的是數據庫表中的主鍵,name屬性對應實體類中需要做主鍵的成員變量名,type屬性是這個成員變量的數據類型,而且這個類型是hibernate映射類型,具體參考映射對照表,column標簽中的name顧名思義就是表中的名字了。generator標簽中的class屬性設置為native,則是為根據不同的底層數據庫采用不同的主鍵生成方式。由於Hibernate會根據底層數據庫采用不同的映射方式,因此便於程序移植,項目中如果用到多個數據庫時,可以使用這種方式。 

               

 

    ⑷、在dao中進行sessionFactory的最後配置:

     ①、獲取SessionFactory

       一種是手動new出一個Configuration抽象工廠,然後用這個抽象工工廠創建SessionFactory。這種需要hibernate的XXX.cfg.xml配置,也就是現在我們講的這種。另外一種是使用spring的bean來new一個SessionFactory,然後注入到dao定義的成員變量SessionFactory中。現在我們先演示第一種:

        Ⅰ、獲取SessionFactory:如果下面的configure()方法不傳入參數那麼就默認是hibernate.cfg.xml文件。

 

<!--獲取SessionFactory-->
SessionFactory sessionFactory = new Configuration().configure("mySQLHibernate.cfg.xml").buildSessionFactory();
        
<!--獲取Session對象-->
Session session = sessionFactory.openSession();

 

        Ⅱ、下面就可執行curd操作啦,示例一個查詢表中所有數據

 

<!--查詢表中所有數據-->        
    Query query = session.createQuery("from BookCard");
    
<!--把查詢出來的數據放到集合中-->        
    List<BookCard> list = query.getResultList();    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved