




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Hibernate知識整理Hibernate基礎(chǔ)-1-hibernate是什么-2hibernate工作原理是什么-3- Hibernate核心類-4-Hibernate與JDBC的比較-5- Hibernate與iBATIS的比較-6持久化ORM入門基礎(chǔ)- 1-ORM簡介-2-ORM的概念 -3-ORM的優(yōu)缺點 -4-目前流行的 ORM 產(chǎn)品 -LOG4J的配置- 3- Log4j在項目中使用過程-2- Log4j基本使用方法 -1- 什么是log4j-HQL基本語法入門- 1.實體查詢-2.屬性查詢-5.參數(shù)邦定-3.實體的更新與刪除-4.分組與排序-6.聯(lián)合查詢-Hi
2、bernate手動配制- 一、 Hibernate基礎(chǔ)1-hibernate是什么 Hibernate是一個ORM(對象/關(guān)系映射)框架,目標是將java中的對象與對象之間的關(guān)系,對應(yīng)到關(guān)系型數(shù)據(jù)庫中的表格與表格之間的關(guān)系 。也可以將關(guān)系型數(shù)據(jù)庫中的表格與表格之間的關(guān)系對應(yīng)到j(luò)ava中的對象與對象之間的關(guān)系。通過這種對應(yīng)關(guān)系,可以用面向?qū)ο蟮某绦蜃珜懛椒▽懗绦?,而不用特定的轉(zhuǎn)換SQL,所有SQL的轉(zhuǎn)換交由Hibernate進行處理。 2hibernate工作原理是什么Hibernate通過對jdbc進行封裝,對java類和關(guān)系數(shù)據(jù)庫進行mapping,實現(xiàn)了對關(guān)系數(shù)據(jù)庫的面向?qū)ο蠓绞降牟僮?,?/p>
3、變了傳統(tǒng)的jdbc + sql操作數(shù)據(jù)的方式,從而使開發(fā)人員可以話更多精力進行對象方面的開發(fā),優(yōu)點并不只是簡化了數(shù)據(jù)庫操作,更有價值的事對不同的數(shù)據(jù)庫提供了統(tǒng)一操作的接口,使得Hibernate幾乎支持所有的數(shù)據(jù)庫開發(fā),進而可使應(yīng)用程序的跨數(shù)據(jù)庫開發(fā)成為可能。3- Hibernate核心類 1)Configuration類 配置啟動Hibernate 將config.xml配置文件提供的配置信息獲取數(shù)據(jù)源等信息 加載Configraction對象 創(chuàng)建SessionFactory對象2)SessionFactory初始化Hibernate 所以由hiberante提供程序與數(shù)據(jù)之間的會話 就是
4、SessonFactory創(chuàng)建會話session) 3)創(chuàng)建Session后可對對象進行基于關(guān)系型數(shù)據(jù)的增刪查改操作。 4)封裝事務(wù)控制 由Hibernate使用JDBC Hiberante提供Transcation類 管理事務(wù) Transcation 開始一個事務(wù) 提交一個事務(wù) 5)Hibernate 提供 HQL語言 Query 和Criteria 工具 根據(jù)我們提供的HQL描述轉(zhuǎn)換為SQL 語句的描述 將結(jié)果返回完成數(shù)據(jù)庫的操作動作4-Hibernate與JDBC的比較相同點: 兩者都是JAVA的數(shù)據(jù)庫操作中間件。 兩者對于數(shù)據(jù)庫進行直接操作的對象都不是線程安全的,都需要及時關(guān)閉。 兩者
5、都可以對數(shù)據(jù)庫的更新操作進行顯式的事務(wù)處理。不同點: 使用的SQL語言不同:JDBC使用的是基于關(guān)系型數(shù)據(jù)庫的標準SQL語言,Hibernate 使用的是HQL(Hibernate query language)語言 操作的對象不同:JDBC操作的是數(shù)據(jù),將數(shù)據(jù)通過SQL語句直接傳送到數(shù)據(jù)庫中執(zhí)行,Hibernate操作的是持久化對象,由底層持久化對象的數(shù)據(jù)更新到數(shù)據(jù)庫中。 數(shù)據(jù)狀態(tài)不同:JDBC操作的數(shù)據(jù)是“瞬時”的,變量的值無法與數(shù)據(jù)庫中的值保持一致,而Hibernate操作的數(shù)據(jù)是可持久的,即持久化對象的數(shù)據(jù)屬性的值是可以跟數(shù)據(jù)庫中的值保持一致的。5- Hibernate與iBATIS的
6、比較區(qū)別1:Hibernate 是當前最流行的O/R mapping框架,當前版本是3.05。它出身于,現(xiàn)在已經(jīng)成為Jboss的一部分了。iBATIS 是另外一種優(yōu)秀的O/R mapping框架,當前版本是2.0。目前屬于apache的一個子項目了。相對Hibernate“O/R”而言,iBATIS 是一種“Sql Mapping”的ORM實現(xiàn)。區(qū)別2:Hibernate對數(shù)據(jù)庫結(jié)構(gòu)提供了較為完整的封裝,Hibernate的O/R Mapping實現(xiàn)了POJO 和數(shù)據(jù)庫表之間的映射,以及SQL 的自動生成和執(zhí)行。程序員往往只需定義好了POJO 到數(shù)據(jù)庫表的映射關(guān)系,即可通過Hibernate
7、提供的方法完成持久層操作。程序員甚至不需要對SQL 的熟練掌握, Hibernate/OJB 會根據(jù)制定的存儲邏輯,自動生成對應(yīng)的SQL 并調(diào)用JDBC 接口加以執(zhí)行。 而iBATIS 的著力點,則在于POJO 與SQL之間的映射關(guān)系。也就是說,iBATIS并不會為程序員在運行期自動生成SQL 執(zhí)行。具體的SQL 需要程序員編寫,然后通過映射配置文件,將SQL所需的參數(shù),以及返回的結(jié)果字段映射到指定POJO。使用iBATIS 提供的ORM機制,對業(yè)務(wù)邏輯實現(xiàn)人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實現(xiàn)ORM 而言基本一致,而對于具體的數(shù)據(jù)操作,Hibernate
8、會自動生成SQL 語句,而iBATIS 則要求開發(fā)者編寫具體的SQL 語句。相對Hibernate而言,iBATIS 以SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設(shè)計提供了更大的自由空間。 二者的對比: 1 iBATIS非常簡單易學,Hibernate相對較復雜,門檻較高。 2 二者都是比較優(yōu)秀的開源產(chǎn)品 3 當系統(tǒng)屬于二次開發(fā),無法對數(shù)據(jù)庫結(jié)構(gòu)做到控制和修改,那iBATIS的靈活性將比Hibernate更適合 4 系統(tǒng)數(shù)據(jù)處理量巨大,性能要求極為苛刻,這往往意味著我們必須通過經(jīng)過高度優(yōu)化的SQL語句(或存儲過程)才能達到系統(tǒng)性能設(shè)計指標。
9、在這種情況下iBATIS會有更好的可控性和表現(xiàn)。 5 iBATIS需要手寫sql語句,也可以生成一部分,Hibernate則基本上可以自動生成,偶爾會寫一些Hql。同樣的需求,iBATIS的工作量比Hibernate要大很多。類似的,如果涉及到數(shù)據(jù)庫字段的修改,Hibernate修改的地方很少,而iBATIS要把那些sql mapping的地方一一修改。 6 以數(shù)據(jù)庫字段一一對應(yīng)映射得到的PO和Hibernte這種對象化映射得到的PO是截然不同的,本質(zhì)區(qū)別在于這種PO是扁平化的,不像Hibernate映射的PO是可以表達立體的對象繼承,聚合等等關(guān)系的,這將會直接影響到你
10、的整個軟件系統(tǒng)的設(shè)計思路。 7 Hibernate現(xiàn)在已經(jīng)是主流O/R Mapping框架,從文檔的豐富性,產(chǎn)品的完善性,版本的開發(fā)速度都要強于iBATIS 6持久化持久化(Persistence),即把數(shù)據(jù)(如內(nèi)存中的對象)保存到可永久保存的存儲設(shè)備中(如磁盤)。持久化的主要應(yīng)用是將內(nèi)存中的數(shù)據(jù)存儲在關(guān)系型的數(shù)據(jù)庫中,當然也可以存儲在磁盤文件中、XML數(shù)據(jù)文件中等等。 持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時狀態(tài)間轉(zhuǎn)換的機制。 JDBC就是一種持久化機制。文件IO也是一種持久化機制。 怎么理解持久化呢?在一定周期內(nèi)保持不變就是持久化,持久化是針對時間來說的. 數(shù)據(jù)庫中的數(shù)據(jù)就是持久化了
11、的數(shù)據(jù),只要你不去刪除或修改. Session會話中Session對象變量也是不變的,是Session容器中持久化。對象持久化的方式有很多種,根據(jù)周期不同有,page,Session,Application, 對象序列化機制對于需要將對象的狀態(tài)保存到文件中,而后能夠通過讀入對象狀態(tài)來重新構(gòu)造對象,恢復程序狀態(tài), 理解持久化的二個層面:應(yīng)用層和系統(tǒng)層、 應(yīng)用層:如果關(guān)閉(shutdown)你的應(yīng)用然后重新啟動則先前的數(shù)據(jù)依然存在。 系統(tǒng)層:如果關(guān)閉(shutdown)你的系統(tǒng)(電腦)然后重新啟動則先前的數(shù)據(jù)依然存在。二、 ORM入門基礎(chǔ)1-ORM簡介從上圖易知,對象關(guān)系映射(Object Rel
12、ational Mapping,簡稱ORM)就是完成對象數(shù)據(jù)到關(guān)系型數(shù)據(jù)映射的機制。一般的ORM包括以下四部分: 一個對持久類對象進行CRUD操作的API; 一個語言或API用來規(guī)定與類和類屬性相關(guān)的查詢; 一個規(guī)定mapping metadata的工具; 一種技術(shù)可以讓ORM的實現(xiàn)同事務(wù)對象一起進行dirty checking, lazy association fetching以及其他的優(yōu)化操作。 ORM的方法論基于三個核心原則: · 簡單:以最基本的形式建模數(shù)據(jù)。 · 傳達性:數(shù)據(jù)庫結(jié)構(gòu)被任何人都能理解的語言文檔化。 ·
13、 精確性:基于數(shù)據(jù)模型創(chuàng)建正確標準化了的結(jié)構(gòu)。 2-ORM的概念 讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關(guān)系"(Relational)。幾乎所有的程序里面,都存在對象和關(guān)系數(shù)據(jù)庫。在業(yè)務(wù)邏輯層和用戶界面層中,我們是面向?qū)ο蟮?。當對象信息發(fā)生變化的時候,我們需要把對象的信息保存在關(guān)系數(shù)據(jù)庫中。 當你開發(fā)一個應(yīng)用程序的時候(不使用O/R
14、 Mapping),你可能會寫不少數(shù)據(jù)訪問層的代碼,用來從數(shù)據(jù)庫保存,刪除,讀取對象信息,等等。你在DAL中寫了很多的方法來讀取對象數(shù)據(jù),改變狀態(tài)對象等等任務(wù)。而這些代碼寫起來總是重復的。 ORM解決的主要問題是對象關(guān)系的映射。域模型和關(guān)系模型分別是建立在概念模型的基礎(chǔ)上的。域模型是面向?qū)ο蟮模P(guān)系模型是面向關(guān)系的。一般情況下,一個持久化類和一個表對應(yīng),類的每個實例對應(yīng)表中的一條記錄,類的每個屬性對應(yīng)表的每個字段。
15、 ORM技術(shù)特點: 1.提高了開發(fā)效率。由于ORM可以自動對Entity對象與數(shù)據(jù)庫中的Table進行字段與屬性的映射,所以我們實際可能已經(jīng)不需要一個專用的、龐大的數(shù)據(jù)訪問層。 2.ORM提供了對數(shù)據(jù)庫的映射,不用sql直接編碼,能夠像操作對象一樣從數(shù)據(jù)庫獲取數(shù)據(jù)。 3-ORM的優(yōu)缺點 ORM的缺點
16、是會犧牲程序的執(zhí)行效率和會固定思維模式。 從系統(tǒng)結(jié)構(gòu)上來看,采用ORM的系統(tǒng)一般都是多層系統(tǒng),系統(tǒng)的層次多了,效率就會降低。ORM是一種完全的面向?qū)ο蟮淖龇?,而面向?qū)ο蟮淖龇ㄒ矔π阅墚a(chǎn)生一定的影響。 在我們開發(fā)系統(tǒng)時,一般都有性能問題。性能問題主要產(chǎn)生在算法不正確和與數(shù)據(jù)庫不正確的使用上。ORM所生成的代碼一般不太可能寫出很高效的算法,在數(shù)據(jù)庫應(yīng)用上更有可能會被誤用,主要體現(xiàn)在對持久對象的提取和和數(shù)據(jù)的
17、加工處理上,如果用上了ORM,程序員很有可能將全部的數(shù)據(jù)提取到內(nèi)存對象中,然后再進行過濾和加工處理,這樣就容易產(chǎn)生性能問題。 在對對象做持久化時,ORM一般會持久化所有的屬性,有時,這是不希望的。 但ORM是一種工具,工具確實能解決一些重復,簡單的勞動。這是不可否認的。但我們不能指望工具能一勞永逸的解決所有問題,有些問題還是需要特殊處理的,但需要特殊處理的部分對絕大多數(shù)的系統(tǒng),應(yīng)該是很少的。4-目前流行的
18、 ORM 產(chǎn)品 目前眾多廠商和開源社區(qū)都提供了持久層框架的實現(xiàn),常見的有: Apache OJB (/ojb/) Cayenne (/cayenne/) Jaxor () Hibernate () iBatis () jRelationalFramework () mirage (/en/oss/mirage/toon) SMYLE (http:/www.drjava.de/smyle) TopLink ( 其中 TopLink 是
19、Oracle 的商業(yè)產(chǎn)品,其他均為開源項目。 其中 Hibernate 的輕量級 ORM 模型逐步確立了在 Java ORM 架構(gòu)中領(lǐng)導地位,甚至取代復雜而又繁瑣的 EJB 模型而成為事實上的 Java ORM 工業(yè)標準。而且其中的許多設(shè)計均被 J2EE 標準組織吸納而成為最新 EJB 3.0 規(guī)范的標準,這也是開源項目影響工業(yè)領(lǐng)域標準的有力見證三、 LOG4J的配制2- 什么是log4jlog4j是一個非常強大的log記錄軟件,下面我們就來看看在項目中如何使log4j。首先當然是得到log4j的jar檔,推薦使用1.2.X版( ) log4j類圖如下:Logger - 日志寫出器,供程序員輸
20、出日志信息 Appender - 日志目的地,把格式化好的日志信息輸出到指定的地方去 ConsoleAppender - 目的地為控制臺的Appender FileAppender - 目的地為文件的Appender RollingFileAppender - 目的地為大小受限的文件的Appender Layout - 日志格式化器,用來把程序員的logging request格式化成字符串 PatternLayout - 用指定的pattern格式化logging request的Layout 2- Log4j基本使用方法 Log4j由三個重要的組件構(gòu)成:日志信息的優(yōu)先級,日志信息的輸出目的
21、地,日志信息的輸出格式。日志信息的優(yōu)先級從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日志信息的重要程度;日志信息的輸出目的地指定了日志將打印到控制臺還是文件中;而輸出格式則控制了日志信息的顯示內(nèi)容。定義配置文件 其實您也可以完全不使用配置文件,而是在代碼中配置Log4j環(huán)境。但是,使用配置文件將使您的應(yīng)用程序更加靈活。Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java特性文件(鍵=值)。下面我們介紹使用Java特性文件做為配置文件的方法:1.配置根Logger,其語法為: log4j.rootLogger = level , appenderNa
22、me, appenderName, 其中,level 是日志記錄的優(yōu)先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優(yōu)先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應(yīng)用程序中相應(yīng)級別的日志信息的開關(guān)。比如在這里定義了INFO級別,則應(yīng)用程序中所有DEBUG級別的日志信息將不被打印出來。 appenderName就是指B日志信息輸出到哪個地方。您可以同時指定多個輸出目的地。2.配置日志信息輸出目的地Appender,其語法為: log4j.appender.appen
23、derName = .of.appender.classlog4j.appender.appenderName.option1 = value1log4j.appender.appenderName.option = valueN其中,Log4j提供的appender有以下幾種:org.apache.log4j.ConsoleAppender(控制臺),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件),org.apache.log
24、4j.RollingFileAppender(文件大小到達指定尺寸的時候產(chǎn)生一個新的文件),org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)3.配置日志信息的格式(布局),其語法為: derName.layout.option1 = value1log4j.appender.appenderName.layout.option = valueN其中,Log4j提供的layout有以e幾種:org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以靈活
25、地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時間、線程、類別等等信息)Log4J采用類似C語言中的printf函數(shù)的打印格式格式化日志信息,打印參數(shù)如下: %m 輸出代碼中指定的消息%p 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL%r 輸出自應(yīng)用啟動到輸出該log信息耗費的毫秒數(shù)%c 輸出所屬的類目,通常就是所在類的全名%t 輸出產(chǎn)生該日志事件的線程名%n 輸出一個回車換行符,Windows平臺為“rn”,Unix平臺為“n”%d
26、輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%dyyy MMM dd HH:mm:ss,SSS,輸出類似:2002年10月18日 22:10:28,921%l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.main(TestLog4.java:10)在代碼中使用Log4j 1.得到記錄器 使用Log4j,第一步就是獲取日志記錄器,這個記錄器將負責控制日志信息。其語法為:public static Logger getLogger( String name)e () )2.讀取配置文件 當獲得了日志記錄器之后,第
27、二步將配置Log4j環(huán)境,其語法為:BasicConfigurator.configure (): 自動快速地使用缺省Log4j環(huán)境。PropertyConfigurator.configure ( String configFilename) :讀取使用Java的特性文件編寫的配置文件。DOMConfigurator.configure ( String filename ) :讀取XML形式的配置文件。3.插入記錄信息(格式化日志信息) 當上兩個必要步驟執(zhí)行完畢,您就可以輕松地使用不同優(yōu)先級別的日志記錄語句插入到您想記錄日志的任何地方,其語法如下:Logger.debug ( Object
28、 message ) ;L ( Object message ) ;Logger.warn ( Object message ) ;Logger.error ( Object message ) ;3- Log4j在項目中使用過程1.將log4j-.jar加入你的項目中;2.在src/下創(chuàng)建perties|log4j.xml文件;3.在web.xml中配置log4j的信息,如下:<context-param> <param-name>log4jConfigLocation</param-name> <param-v
29、alue>/WEB-INF/classes/perties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>4.在項目webroot下創(chuàng)建你想要保存日志文件的文件夾及文件,如webroot/logs/web_app.log;具體perties文件示例如下:log4
30、j.rootLogger=INFO, stdout, logfile.PatternLayout#log4j.appender.stdout.layout.ConversionPattern=%d %p %c - %m%nlog4j.appender.stdout.layout.ConversionPattern=- %m%nlog4j.appender.logfile.File=$webapp.root/logs/webapp.loglog4j.appender.logfile.MaxFileSize=512KB# Keep three backup files.log4j.appender
31、.logfile.MaxBackupIndex=3# Pattern to output: date priority category - messagelog4j.appender.logfile.layout.ConversionPattern=%d %p %c - %m%n.opensymphony.xwork2=ERROR # Control logging for other open source .springframework=ERROR.quartz=ERROR.sf.ehcache=ERROR
32、.sf.navigator=ERRORmons=ERROR.apache.struts=ERROR# Struts OgnlUtil issues unimportant warnings .opensymphony.xwork2.util.OgnlUtil=error .opensymphony.xwork2.ognl.OgnlValueStack=error 4網(wǎng)上找的一個實例配制 log4j文件 一、配置文件xmllog4jconfig.xml如下,放到工程的根目錄Xml代碼 1. <?xml version="1.0"
33、 encoding="GB2312" ?> 2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 3. <!-#log4j中有5級logger ,#FATAL 0 ,#ERROR 3 ,#WARN 4 ,#INFO 6 ,#DEBUG 7 ->
34、4. <log4j:configuration xmlns:log4j='/log4j/'> 5. 6. <!-輸出到控制臺-> 7. <!- 8. <appender name="LOG.Console" class="org.apache.log4j.ConsoleAppender">
35、0; 9. <layout class="org.apache.log4j.PatternLayout"> 10. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss %-5p %c %F:%L - %m%n" />
36、0; 11. </layout> 12. </appender> 13. -> 14. 15. <!-將級別為DEBUG的信息輸出到控制臺-> 16. <appender name="LOG.DEBUG" class="org.apache.log4j.RollingFileAppender"> 17. <
37、param name="File" value="d:/log/debug.log" /> 18. <param name="MaxFileSize" value="5120KB" /> 19. <param name="MaxBackupIndex" value="10" /> 20.
38、 <layout class="org.apache.log4j.PatternLayout"> 21. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss %-5p %c %F:%L - %m%n" /> 22. </layout> 23
39、. <filter class="org.apache.log4j.varia.LevelRangeFilter"> 24. <param name="LevelMin" value="DEBUG" /> 25. <param name="LevelMax" value="
40、;DEBUG" /> 26. </filter> 27. </appender> 28. 29. <!-將級別為INFO的信息輸出到控制臺-> 30. <appender name="LOG.INFO" class="org.apache.log4j.RollingFileAppender">
41、 31. <param name="File" value="d:/log/info.log" /> 32. <param name="MaxFileSize" value="5120KB" /> 33. <param name="MaxBackupIndex" value="10" />
42、160; 34. <layout class="org.apache.log4j.PatternLayout"> 35. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss %-5p %c %F:%L - %m%n" /> 36. </layout> &
43、#160; 37. <filter class="org.apache.log4j.varia.LevelRangeFilter"> 38. <param name="LevelMin" value="INFO" /> 39. <param name="LevelMax" valu
44、e="INFO" /> 40. </filter> 41. </appender> 42. 43. <!-將級別為WARN的信息輸出到控制臺-> 44. <appender name="LOG.WARN" class="org.apache.log4j.RollingFileAppender">
45、 45. <param name="File" value="d:/log/warn.log" /> 46. <param name="MaxFileSize" value="5120KB" /> 47. <param name="MaxBackupIndex" value="10" />
46、160; 48. <layout class="org.apache.log4j.PatternLayout"> 49. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss %-5p %c %F:%L - %m%n" /> 50. </layout>&
47、#160; 51. <filter class="org.apache.log4j.varia.LevelRangeFilter"> 52. <param name="LevelMin" value="WARN" /> 53. <param name="LevelMax"
48、0;value="WARN" /> 54. </filter> 55. </appender> 56. 57. <!-將級別為ERROR的信息輸出到控制臺-> 58. <appender name="LOG.ERROR" class="org.apache.log4j.RollingFileAppender"&g
49、t; 59. <param name="File" value="d:/log/error.log" /> 60. <param name="MaxFileSize" value="5120KB" /> 61. <param name="MaxBackupIndex" value="10"
50、0;/> 62. <layout class="org.apache.log4j.PatternLayout"> 63. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss %-5p %c %F:%L - %m%n" /> 64. </la
51、yout> 65. <filter class="org.apache.log4j.varia.LevelRangeFilter"> 66. <param name="LevelMin" value="ERROR" /> 67. <param name="LevelMax
52、" value="ERROR" /> 68. </filter> 69. </appender> 70. 71. <!-將級別為FATAL的信息輸出到控制臺-> 72. <appender name="LOG.FATAL" class="org.apache.log4j.RollingFileAppen
53、der"> 73. <param name="File" value="d:/log/fatal.log" /> 74. <param name="MaxFileSize" value="5120KB" /> 75. <param name="MaxBackupIndex" value="1
54、0" /> 76. <layout class="org.apache.log4j.PatternLayout"> 77. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss %-5p %c %F:%L - %m%n" />
55、78. </layout> 79. <filter class="org.apache.log4j.varia.LevelRangeFilter"> 80. <param name="LevelMin" value="FATAL" /> 81. <param name=&qu
56、ot;LevelMax" value="FATAL" /> 82. </filter> 83. </appender> 84. 85. <!- 86. <appender name="InitAction" class="org.apache.log4j.DailyRollingFileAppender&q
57、uot;> 87. <param name="File" value="d:/dbcon.log"/> 88. <param name="MaxFileSize" value="5120KB"/> 89. <param name="MaxFileSize" value="10" />
58、 90. <param name="MaxBackupIndex" value="2" /> 91. <param name="DatePattern" value="'.'yyyy-MM-dd'.'log"/> 92. <layout class="org.apache.log4j.PatternLayout"&g
59、t; 93. <param name="ConversionPattern" value="%dyyy-MM-dd HH:mm:ss - %m%n"/> 94. <param name="ConversionPattern" value="%dDATE %-5p %c %F:%L - %m%n&
60、quot;/> 95. </layout> 96. </appender> 97. -> 98. 99. <!-設(shè)置org.logicalcobwebs包的輸出級別為INFO-> 100. <!- 101. <category name="org.logicalcobwebs"> 102. <prio
61、rity value="INFO" /> 103. <appender-ref ref="LOG.Console" /> 104. </category> 105. -> 106. <root> 107. <priority value="DEBUG"/> 108. <!-
62、160; 109. <appender-ref ref="LOG.Console" /> 110. -> 111. <appender-ref ref="LOG.DEBUG" /> 112. <appender-ref ref="LOG.INFO" /> 113. <appender-ref ref="
63、;LOG.WARN" /> 114. <appender-ref ref="LOG.ERROR" /> 115. <appender-ref ref="LOG.FATAL" /> 116. </root> 117. 118. </log4j:configuration> 二、新建Simp
64、andfile.java如下Java代碼 1. import junit.framework.Test; 2. import org.apache.log4j.Level; 3. import org.apache.log4j.Logger; 4. import org.apache.log4j.PropertyConfigurator; 5. import org.apache.log4j.xml.DOMConfigurator;
65、0; 6. public class Simpandfile 7. 8. static Logger logger = Logger.getLogger(Test.class); 9. 10. public static void main(String args) 11. 12. / 以property方式讀到配置文件
66、。 13. for(int i=0;i<100;i+) 14. 15. /PropertyConfigurator.configure("perties"); 16. DOMConfigurator.configure("xmllog4jconfig.xml"); 17. logger.debug("Here is some DEBUG");
67、 18. ("Here is some INFO"); 19. logger.warn("Here is some WARN"); 20. logger.error("Here is some ERROR"); 21. logger.fatal("Here is some FATAL
68、"); 22. 23. 24. Java代碼 1. import junit.framework.Test; 2. import org.apache.log4j.Level; 3. import org.apache.log4j.Logger; 4. import org.apache.log4j.PropertyConfigurator;
69、160;5. import org.apache.log4j.xml.DOMConfigurator; 6. public class Simpandfile 7. 8. static Logger logger = Logger.getLogger(Test.class); 9. 10. public static void main(String args)
70、160; 11. 12. / 以property方式讀到配置文件。 13. for(int i=0;i<100;i+) 14. 15. /PropertyConfigurator.configure("perties"); 16. DOMConfigurator.configure("xmllog4jconfig.xml"); 17. logger.debu
71、g("Here is some DEBUG"); 18. ("Here is some INFO"); 19. logger.warn("Here is some WARN"); 20. logger.error("Here is some ERROR"); 21. logger.fatal("Here is some FATAL"); 22. 23. 24. 四、 HQL基本語法入門1. 實體查詢String hql = " from TUser&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線監(jiān)測技術(shù)優(yōu)化-洞察及研究
- 智能安全防護體系-洞察及研究
- 生物醫(yī)學控制新方法研究-洞察及研究
- 2025BIM教育培訓與行業(yè)應(yīng)用咨詢服務(wù)合同范本
- 二零二五年度吧臺餐飲業(yè)務(wù)承包經(jīng)營合同書
- 非二元性別-挑戰(zhàn)傳統(tǒng)二元性別理論-洞察及研究
- 2025年農(nóng)村集體安置房交易合同模板
- 腈綸金屬纖維導電復合-洞察及研究
- 地質(zhì)條件防水對策-洞察及研究
- 2025-2030中國特種集裝箱運輸產(chǎn)業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 一通三防管理課件
- 2025秋二年級上冊語文上課課件 2 我是什么
- 胖東來總值班管理制度
- 口腔診室終末消毒流程
- 2024年廣州市荔灣區(qū)社區(qū)專職招聘考試真題
- 切口感染案例分析
- 2025-2030年中國管道運輸行業(yè)市場深度分析及發(fā)展前景與投資研究報告
- 特性設(shè)備安全培訓課件
- 兒童版心肺復蘇課件
- 桌游店創(chuàng)業(yè)初期計劃書
評論
0/150
提交評論