日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hibernate的Configuration和配置文件

發(fā)布時(shí)間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate的Configuration和配置文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、hibernate的入口Configuration

? ? ?

? ? ?在Hibernate中,Configuration是hibernate的入口。在實(shí)例化一個(gè)Configuration的時(shí)候,Hibernate會(huì)自動(dòng)在環(huán)境變量(classpath)里面查找Hibernate配置文件hibernate.properties。如果該文件存在,則將該文件的內(nèi)容加載到一個(gè)Properties的實(shí)例GLOBAL_PROPERTIES里面,如果不存在,將打印信息hibernate.properties not found;


? ? ?接下來(lái)Hibernate將所有系統(tǒng)環(huán)境變量(System.getProperties())也添加到GLOBAL_PROPERTIES里面。如果配置文件hibernate.properties存在,系統(tǒng)還會(huì)進(jìn)一步驗(yàn)證這個(gè)文件配置的有效性,對(duì)于一些已經(jīng)不支持的配置參數(shù),系統(tǒng)將打印出警告信息。?


? ? ?默認(rèn)狀態(tài)下configure()方法會(huì)自動(dòng)在環(huán)境變量(classpath)下面尋找Hibernate配置文件hibernate.cfg.xml,如果該文件不存在,系統(tǒng)會(huì)打印如下信息并拋出HibernateException異常: hibernate.cfg.xml not found;如果該文件存在,configure()方法會(huì)首先訪問(wèn)<session-factory>,并獲取該元素name的屬性,如果name的屬性非空,將用這個(gè)配置的值來(lái)覆蓋hibernate.properties的hibernate.session_factory_name的配置的值,從這里我們可以看出,hibernate.cfg.xml里面的配置信息可以覆蓋hibernate.properties的配置信息。


二、Configuration常用操作函數(shù)

(1)使用Hibernate配置文件

? ? ?1、??Configuration 指定映射文件

? ? ? ? ?Configuration cfg=new Configuration().configure("/hibernate.cfg.xml");
? ? ? ? ?或者Configuration cfg=new Configuration().configure("/hibernate.properties");


? ? ?2、Configuration指定映射文件
? ? ? ? ?cfg.addResource("test/User.hbm.xml");


? ? ?3、Configuration指定POJO類,User.hbm.xml根User.java一個(gè)目錄
? ? ? ? ?cfg.addClass(test.Order.class);


(2) Configuration指定Hibernate配置屬性(無(wú)配置文件,加載了配置文件就不能使用這個(gè)方法)

? ? Configuration cfg = new Configuration()
? ? ? ? ? ?.addClass(test.User.class)
? ? ? ? ? ?.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
? ? ? ? ? ?.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")
? ? ? ? ? ?.setProperty("hibernate.order_updates", "true");

?

?

(3) SessionFactory

? ? 1、單個(gè)?SessionFactory實(shí)例

?

? ? ? ?SessionFactory sessions = cfg.buildSessionFactory();


? ? ? 當(dāng)所有映射定義被 Configuration 解析后,應(yīng)用程序必須獲得一個(gè)用于構(gòu)造org.hibernate.Session 實(shí)例的工廠SessionFactory。這個(gè)工廠將被應(yīng)用程序的所有線程共享,線程安全的全局對(duì)象,只需要被實(shí)例化一次。單例模式。
? ??

? ? 2、Hibernate 允許應(yīng)用程序創(chuàng)建多個(gè)SessionFactory 實(shí)例

? ? ? ??用xml配置來(lái)配置多個(gè)數(shù)據(jù)庫(kù)的話,那就寫(xiě)多個(gè)配置文件。


? ? ? ?對(duì)應(yīng)兩個(gè)數(shù)據(jù)庫(kù)(一個(gè)是MySQL,一個(gè)是SQLServer),可以把其xml文件定義為“mysql.cfg.xml” 和 “sqlserver.cfg.xml”。

? ? ? ? Configuration類獲取SessionFactory的代碼如下:

? ? ? ?SessionFactory mysqlFactory = new Configuration().configure("/mysql.cfg.xml").buildSessionFactory();?
? ? ? ?SessionFactory sqlserverFactory = new Configuration().configure("/sqlserver.cfg.xml ").buildSessionFactory();?


三、Hibernate配置參數(shù)詳解

?

1、Hibernate JDBC 屬性

屬性名

用途

hibernate.connection.driver_class

JDBC driver class

hibernate.connection.url

JDBC URL

hibernate.connection.username

database user

hibernate.connection.password

?數(shù)據(jù)庫(kù)用戶密碼

hibernate.connection.pool_size

maximum number of pooled connections


2、Hibernate 數(shù)據(jù)源屬性

屬性名

用途

hibernate.connection.datasource

數(shù)據(jù)源?JNDI 名字

hibernate.jndi.url JNDI

提供者的?URL(可選)

hibernate.jndi.class JNDI

InitialContextFactory 類(可選)

hibernate.connection.username

?數(shù)據(jù)庫(kù)用戶(可選)

hibernate.connection.password

數(shù)據(jù)庫(kù)密碼(可選)


3、可選的配置屬性

有大量屬性能用來(lái)控制 Hibernate 在運(yùn)行期的行為。它們都是可選的,并擁有適當(dāng)?shù)哪J(rèn)值。

屬性名

用途

可選值

()內(nèi)為默認(rèn)

hibernate.dialect

允許?Hibernate?針對(duì)特定的關(guān)系數(shù)據(jù)庫(kù)生成優(yōu)化的SQL??org.hibernate.dialect.Dialect?類名。

例如:org.hibernate.dialect.MySQLDialect

?

hibernate.show_sql

輸出所有?SQL?語(yǔ)句到控制臺(tái)。

true|false

false

hibernate.format_sql

?log??console?中打印出更漂亮的?SQL。

true|false

false

hibernate.default_catalog

?在生成的?SQL?中,將給定的?catalog?附加于非全限定名的表名上

?

hibernate.session_factory_name

org.hibernate.SessionFactory?創(chuàng)建后,將自動(dòng)使用這個(gè)名字綁定到?JNDI?中。

?

hibernate.max_fetch_depth

為單向關(guān)聯(lián)(一對(duì)一,多對(duì)一)的外連接抓取(outer join fetch)樹(shù)設(shè)置最大深度。

03

hibernate.default_batch_fetch_size

??Hibernate?關(guān)聯(lián)的批量抓取設(shè)置默認(rèn)數(shù)量。

48、16

hibernate.default_entity_mode

?為由這個(gè)?SessionFactory?打開(kāi)的所有?Session指定默認(rèn)的實(shí)體表現(xiàn)模式。

dynamic-mapdom4jpojo

hibernate.order_updates

?強(qiáng)制?Hibernate?按照被更新數(shù)據(jù)的主鍵,為SQL?更新排序。這么做將減少在高并發(fā)系統(tǒng)中事務(wù)的死鎖。

true|false

?

hibernate.generate_statistics

?如果開(kāi)啟,Hibernate?將收集有助于性能調(diào)節(jié)的統(tǒng)計(jì)數(shù)據(jù)。

true|false

?

hibernate.use_identifier_rollback

如果開(kāi)啟,在對(duì)象被刪除時(shí)生成的標(biāo)識(shí)屬性將被重設(shè)為默認(rèn)值。

true|false

?

hibernate.use_sql_comments

如果開(kāi)啟,Hibernate?將在?SQL?中生成有助于調(diào)試的注釋信息,默認(rèn)值為?false。

true|false

false


?


?

總結(jié)

以上是生活随笔為你收集整理的hibernate的Configuration和配置文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。