Hibernate之設定檔

來源:互聯網
上載者:User

Hibernate之設定檔

可持久化對象有以下三種狀態:

臨時狀態(Transient):對象在儲存進資料庫之前為臨時狀態,這時資料庫中沒有該對象的資訊,如果沒有持久化,程式退出後臨時狀態的對象資訊將會丟失。隨時可能被記憶體回收行程回收(在資料庫中沒有於之對應的記錄,應為是new初始化),而執行save()方法後,就變為Persistent對象(持久性對象),沒有納入session的管理,記憶體中一個對象,沒有ID,緩衝中也沒有

持久化狀態(Persistent):對象在儲存進資料庫後或者從資料庫載入後、並且沒有脫離Session時為持久化狀態,這時候資料庫中有該對象的資訊。由於還在Session中,持久化狀態的對象可以執行任何有關資料庫的操作,在資料庫有存在的對應的記錄,納入session管理。在清理緩衝(髒資料檢查)的時候,會和資料庫同步。記憶體中有、緩衝中有、資料庫有(ID)

分離狀態(Detached):分離狀態是對象曾經出於持久化狀態,但是現在已經離開Session了。雖然分離狀態的對象有id值,但是已經無法執行有關資料庫的操作了。例如,讀取消極式載入的集合屬性,可能會拋出LazyInitalizeException。

Hibernate整體理解

Hibernate的映射機制 

Hibernate事務隔離機制(樂觀鎖-悲觀鎖) 

 

設定檔

Hibernate同時支援動態配置 

XML配置

Configurationcfg = new Configuration().addResource(“com/clf/Cat.hbm.xml”);

//註解配置

Configuration cfg= new Configuration().addClass(com.clf.bean.cat.Class); 

通過setProperty(“hibernate.dialect”,”org.hibernate.dialect.MySQLDialect”)類似的方法可以動態地設定Hibernate參數,還可以用addProperties(Propertiesp)批量的添加參數

常規配置

Hibernate的設定檔可以為XML或者properties檔案,預設的設定檔名稱為hibernate.cfg.xml或者hibernate.properties,位於classpath下面。properties檔案中的參數是具有hibernate首碼的,而xml檔案沒有

hibernate.connection.driver_class= com.mysql.jdbc.Driver
hibernate.connection.url= jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8
hibernate.connection.username= root
hibernate.connection.password= admin
hibernate.dialect= org.hibernate.dialect.MySQLDialect
hibernate.show_sql= true
hibernate.hbm2ddl.auto= create
hibernate.current_session_context_class= thread

 

<?xml  version="1.0″ encoding="UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

 <!--為true表示將Hibernate發送給資料庫的sql顯示出來 -->
 <property name="show_sql">true</property>

 <!-- SQL方言,這邊設定的是MySQL -->
 <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

 <!-- 一次讀的資料庫記錄數 -->
 <property name="jdbc.fetch_size">50</property>

 <!-- 設定對資料庫進行大量刪除 -->
 <property name="jdbc.batch_size">30</property>

 <!--驅動程式-->
 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

 <!--JDBC URL -->
 <property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property>

 <!-- 資料庫使用者名稱-->
 <property name="connection.username">root</property>

 <!– 資料庫密碼–>
 <property name="connection.password">root</property>

 <!--對應檔 -->
 <mapping resource="com/amigo/pojo/User.hbm.xml"/>
 <mapping resource="com/amigo/pojo/Org.hbm.xml"/>
</session-factory>
</hibernate-configuration>

配置資料來源

<session-factory>
<!--下面為JNDI的配置 -->
<!-- 資料來源的名稱 -->
<property name="connection.datasource">java:comp/env/jdbc/datasourcename</property>

<!-- 資料來源的提供者  -->
<property name="hibernate.jndi.url"></property>

<!-- 資料來源的實作類別  -->
<property name="hibernate.jndi.class"></property>

<!-- Hibernate的串連載入類 -->
<property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider</property>

<property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>

<!--對應檔 -->
<mapping resource="com/amigo/pojo/User.hbm.xml"/>
<mapping resource="com/amigo/pojo/Org.hbm.xml"/>
</session-factory>

c3p0串連池

c3p0串連池是Hibernate推薦使用的串連池,若需要使用該串連池時,需要將c3p0的jar包加入到classpath中。c3p0串連池的配置樣本如下:

<session-factory>
<property name="connection.driver_class">……</property>

<!-- JDBC URL -->
<property name="connection.url">……</property>

<!-- 資料庫使用者名稱 -->
<property name="connection.username">user</property>

<!-- 資料庫密碼 -->
<property name="connection.password">pass</property>

<property name="c3p0.min_size">5</property>

<property name="c3p0.max_size">20</property>

<property name="c3p0.timeout">1800</property>

<property name="c3p0.max_statements">50</property>
……
</session-factory>

在上述配置中,Hibernate根據設定檔產生串連,再交給c3p0管理。

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 3
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.