當前位置:首頁 » 編程語言 » hibernatesql日誌
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

hibernatesql日誌

發布時間: 2022-04-02 11:25:29

1. 怎麼樣配置log4j 才能將hibernate在控制台輸出sql語句

因為hibernate在輸出sql時使用的logger名為org.hibernate.SQL,所以想讓SQL語句輸出到log4j,只要在log4j.properties或log4j.xml的配置中加上如下語句:

log4j.logger.org.hibernate.SQL=DEBUG

記得同時把hibernate中配置文件hibernate.show_sql設置為false,避免同時在控制台和log日誌中雙份輸出sql語句。

2. hibernate 的sql語句老是要增加transaction日誌 有沒有簡單的方法

Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
Hibernate的核心介面一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心介面在任何開發中都會用到。通過這些介面,不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這五的核心介面分別加以介紹。
·Session介面:Session介面負責執行被持久化對象的CRUD操作(CRUD的任務是完成與資料庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這里當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSesion對象稱為用戶session。
·SessionFactory介面:SessionFactroy介面負責初始化Hibernate。它充當數據存儲源的代理,並負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。
·Configuration介面:Configuration介面負責配置並啟動Hibernate,創建SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然後創建SessionFactory對象。
·Transaction介面:Transaction介面負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層事務處理代碼。
·Query和Criteria介面:Query和Criteria介面負責執行各種資料庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。
Hibernate源碼中幾個包的作用簡要介紹
net.sf.hibernate.*

該包的類基本上都是介面類和異常類

net.sf.hibernate.cache.*

JCS的實現類

net.sf.hibernate.cfg.*

配置文件讀取類

net.sf.hibernate.collection.*

Hibernate集合介面實現類,例如List,Set,Bag等等,Hibernate之所以要自行編寫集合介面實現類是為了支持lazy loading

net.sf.hibernate.connection.*

幾個資料庫連接池的Provider

net.sf.hibernate.dialect.*

支持多種資料庫特性,每個Dialect實現類代表一種資料庫,描述了該資料庫支持的數據類型和其它特點,例如是否有AutoIncrement,是否有Sequence,是否有分頁sql等等

net.sf.hibernate.eg.*

Hibernate文檔中用到的例子

net.sf.hibernate.engine.*

這個包的類作用比較散

net.sf.hibernate.expression.*

HQL支持的表達式

net.sf.hibernate.hq.*

HQL實現

net.sf.hibernate.id.*

ID生成器

net.sf.hibernate.impl.*

最核心的包,一些重要介面的實現類,如果Session,SessionFactory,Query等

net.sf.hibernate.jca.*

JCA支持,把Session包裝為支持JCA的介面實現類

net.sf.hibernate.jmx.*

我不懂JMX,只知道JMX是用來編寫App Server的管理程序的,大概是JMX部分介面的實現,使得App Server可以通過JMX介面管理Hibernate

net.sf.hibernate.loader.*

也是很核心的包,主要是生成sql語句的

net.sf.hibernate.lob.*

Blob和Clob支持

net.sf.hibernate.mapping.*

hbm文件的屬性實現

net.sf.hibernate.metadata.*

PO的Meta實現

net.sf.hibernate.odmg.*

ODMG是一個ORM標准,這個包是ODMG標準的實現類

net.sf.hibernate.persister.*

核心包,實現持久對象和表之間的映射

net.sf.hibernate.proxy.*

Proxy和Lazy Loading支持

net.sf.hibernate.ps.*

該包是PreparedStatment Cache

net.sf.hibernate.sql.*

生成JDBC sql語句的包

net.sf.hibernate.test.*

測試類,你可以用junit來測試Hibernate

net.sf.hibernate.tool.hbm2ddl.*

用hbm配置文件生成DDL

net.sf.hibernate.transaction.*

Hibernate Transaction實現類

net.sf.hibernate.type.*

Hibernate中定義的持久對象的屬性的數據類型

net.sf.hibernate.util.*

一些工具類,作用比較散

net.sf.hibernate.xml.*

XML數據綁定
hibernate官方網站
以上是來自 Internet
說白了就是 數據持久層

3. hibernate如何獲取執行的sql,用於操作日誌。

hibernate可以用? 不過不是SQL 是HQL語句

具體的是 其中表名 跟欄位名都用類名和屬性名替換 還有就是你如過是用的oracle的話 可以寫一個過程來處理這些日誌。
具體的東西太多了 你去差下資料吧

4. 如何將Hibernate生成的SQL語句列印到日誌文件

1 操作
只需要在log4j.properties中加入以下兩行代碼即可
#輸出sql語句到日誌
log4j.logger.org.hibernate.SQL=debug

#將對應的參數佔位符?換成傳入的參數
log4j.logger.org.hibernate.type=trace

實驗效果:

2017-09-05 16:51:26 [DubboServerHandler-thread-1] DEBUG org.hibernate.SQL (104) -
select
cpsysparm0_.CODE as CODE65_0_,
cpsysparm0_.NAME as NAME65_0_,
cpsysparm0_.PARMVALUE as PARMVALUE65_0_,
cpsysparm0_.PARMDESC as PARMDESC65_0_,
cpsysparm0_.MODIFIABLE as MODIFIABLE65_0_,
cpsysparm0_.VIEWABLE as VIEWABLE65_0_,
cpsysparm0_.OPERUSER as OPERUSER65_0_,
cpsysparm0_.OPERTIME as OPERTIME65_0_
from
CP_SYSPARM cpsysparm0_
where
cpsysparm0_.CODE=?
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicBinder (83) - binding parameter [1] as [VARCHAR] - 012
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (72) - Found [當前場次 ] as column [NAME65_0_]
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (72) - Found [1] as column [PARMVALUE65_0_]
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (67) - Found [null] as column [PARMDESC65_0_]
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (72) - Found [0] as column [MODIFIABLE65_0_]
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (72) - Found [1] as column [VIEWABLE65_0_]
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (72) - Found [init ] as column [OPERUSER65_0_]
2017-09-05 16:51:26 [DubboServerHandler-thread-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor (72) - Found [2011-11-23 10:06:47.0] as column [OPERTIME65_0_]

可以看到查詢的過程和結果都進行了輸出。

5. 如何設置hibernate列印sql語句

只要加上下面這個語句就可以了 Log4j.propreties代碼 #輸出sql語句到日誌 log4j.logger.org.hibernate.SQL=debug #將對應的參數佔位符?換成傳入的參數 log4j.logger.org.hibernate.type=trace

6. HIBERNATE怎樣查看sql語句

弄hibernate時,想顯示sql語句,可以設置show_sql為true來達到這個目的,但是參數值全是像PreparedStatement一樣,用?來代替的。用p6spy可以達到顯示的那些參數原值的目的,但可讀性差。可以利用SQL Profiler來處理這個事情。p6spy: http://www.p6spy.com/SQL Profile: http://www.jahia.net/jahia/page597.htmlp6spy安裝:* 將p6spy.jar放到WEB-INF/lib目錄下,將spy.properties放到WEB-INF/classes目錄下。* 修改你 原有 JDBC Driver為:com.p6spy.engine.spy.P6SpyDriver* 修改 spy.properties 中的 realdriver 值為 原有 的JDBC Driver,比如我的是:com.mysql.jdbc.Driver* 完成,運行web server。我的日誌記錄產生在 %TOMCAT_HOME%\bin下,此log位置可以能過修改 logfile = x:\x_dir\spy.log 來控制打開看看,看裡面的日誌是不是看起來比較不爽?下面我們安裝SQL Profiler來讓自已的視線爽一點。SQL Profiler安裝:(須p6spy成功安裝)* 將SQL Profiler自帶的spy.properties覆蓋原來的classes目錄下文件* 修改現在spy.properties中realdriver 值為 原有 的JDBC Driver看後看看readme注意這幾句 ^__^ :1. Start the GUI2. Start the webapp, in starts doing some JDBC requests we will ignore3. Press the "reset" button on the GUI4. Make a request to the webapp5. Press the "pause" button after the request has finished executing6. Press the "report" button to save profiling results as a CSV file* 我們先用java -jar sqlprofiler.jar 運行 sql profiler* 然後啟動web server :-)一切盡在眼前了吧?

7. 用hibernate查詢sql資料庫並輸出

你這只是一個實體類 無從下手的 你可以定義一個實體對象 完了賦值userid=3 再通過hibernate的get方法 +你這個有值的對象做參數去獲得這個資料庫記錄

也可以通過excuteSQL(SQL語句去執行)

8. HIbernate 顯示sql語句

用這個setParamertment(1,「」)方法,給「?」傳參數
「1」代表第一參數,第二個要傳的值,
如果要傳的是整型可以用setInt(,)
字元串類型 可以用setString
這幾個方法都是PreparedStatement類的具體的你可以訪問
http://ke..com/view/890310.html?wtp=tt