一、spring
1.ContextLoaderListener
它作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實(shí)現(xiàn)了ServletContextListener這個接口,在web.xml配置這個監(jiān)聽器,啟動容器時,就會默認(rèn)執(zhí)行它實(shí)現(xiàn)的方法。在ContextLoaderListener中關(guān)聯(lián)了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成。ContextLoader創(chuàng)建的是 XmlWebApplicationContext這樣一個類,它實(shí)現(xiàn)的接口是WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext->BeanFactory這樣一來spring中的所有bean都由這個類來創(chuàng)建。如果在web.xml中不寫任何參數(shù)配置信息,默認(rèn)的路徑是"/WEB-INF/applicationContext.xml,在WEB-INF目錄下創(chuàng)建的xml文件的名稱必須是applicationContext.xml。如果是要自定義文件名可以在web.xml里加入contextConfigLocation這個context參數(shù):
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/*.xml</param-value>
</context-param>
2.default-autowire
在spring容器內(nèi)拼湊bean叫作裝配。裝配bean的時候,你是在告訴容器,需要哪些bean,以及容器如何使用依賴注入將它們配合在一起。而default-autowire設(shè)置了bean的默認(rèn)裝配方式。
我們常常使用<ref>標(biāo)簽為JavaBean注入它依賴的對象。但是對于一個大型的系統(tǒng),這個操作將會耗費(fèi)我們大量的資源,我們不得不花費(fèi)大量的時間和精力用于創(chuàng)建和維護(hù)系統(tǒng)中的<ref>標(biāo)簽。我們可以通過指定autowire來讓容器為受管JavaBean自動注入依賴對象。
byName:通過屬性的名字的方式查找JavaBean依賴的對象并為其注入。比如說類UserAction有個屬性userService,Spring IoC容器會在配置文件中查找id/name屬性為userService的bean,然后使用Seter方法為其注入。
注意:在配置bean時,<bean>標(biāo)簽中Autowire屬性的優(yōu)先級比其上級標(biāo)簽<beans/>高,即是說,如果在上級標(biāo)簽中定義default-autowire屬性為byName,而在<bean>中定義為byType時,Spring IoC容器會優(yōu)先使用<bean>標(biāo)簽的配置。
3.default-lazy-init
加載spring bean時,默認(rèn)采用的延遲策略。
二、Hibernate
1.load和get
a.如果未能發(fā)現(xiàn)符合條件的記錄,get方法返回null,而load方法會拋出一個 ObjectNotFoundException。
b.Load方法可返回實(shí)體的代理類實(shí)例,而get方法永遠(yuǎn)直接返回實(shí)體類。
c.load方法可以充分利用內(nèi)部緩存和二級緩存中的現(xiàn)有數(shù)據(jù),而get方法則僅僅在內(nèi)部緩存中進(jìn)行數(shù)據(jù)查找,如沒有發(fā)現(xiàn)對應(yīng)數(shù)據(jù),將越過二級緩存,直接調(diào)用SQL完成數(shù)據(jù)讀取。
2.對象的三種狀態(tài)
Hibernate的對象有3種狀態(tài),分別為:瞬時態(tài)(Transient)、 持久態(tài)(Persistent)、脫管態(tài)(Detached)。
瞬時態(tài):
由new命令開辟內(nèi)存空間的java對象,
如:Person person = new Person("xxx", "xx");
瞬時對象在內(nèi)存孤立存在,不和數(shù)據(jù)庫的數(shù)據(jù)有任何關(guān)聯(lián)關(guān)系,在Hibernate中,可通過session的save()或saveOrUpdate()方法將瞬時對象與數(shù)據(jù)庫相關(guān)聯(lián),并將數(shù)據(jù)對應(yīng)的插入數(shù)據(jù)庫中,此時該瞬時對象轉(zhuǎn)變成持久化對象。
持久態(tài):
處于該狀態(tài)的對象在數(shù)據(jù)庫中具有對應(yīng)的記錄,并擁有一個持久化標(biāo)識。如果是用hibernate的delete()方法,對應(yīng)的持久對象就變成瞬時對象。
當(dāng)一個session執(zhí)行close()或clear()、evict(po)之后,持久對象變成脫管對象,此時持久對象會變成脫管對象,此時該對象雖然具有數(shù)據(jù)庫識別值,但它已不在HIbernate持久層的管理之下。
持久對象具有如下特點(diǎn):
1. 和session實(shí)例關(guān)聯(lián);
2. 在數(shù)據(jù)庫中有與之關(guān)聯(lián)的記錄。
脫管態(tài):
當(dāng)與某持久對象關(guān)聯(lián)的session被關(guān)閉后,該持久對象轉(zhuǎn)變?yōu)槊摴軐ο蟆?br />
1. 本質(zhì)上與瞬時對象相同,在沒有任何變量引用它時,JVM會在適當(dāng)?shù)臅r候?qū)⑺厥眨?/p>
2. 比瞬時對象多了一個數(shù)據(jù)庫記錄標(biāo)識值。
2.名詞解釋
a.persist把一個瞬態(tài)的實(shí)例持久化,但是并"不保證"標(biāo)識符(identifier主鍵對應(yīng)的屬性)被立刻填入到持久化實(shí)例中,標(biāo)識符的填入可能被推遲到flush的時候。
b.clear完整的清除session緩存
c.evcit(obj)把某個持久化對象從session的緩存中清空。
d.persist只能持久化一個瞬時態(tài)的對象,
三、java
1.格式化日期
SimpleDateFormat format = new SimpleDateFormat("yyyy年M月d日");
format.format(date);
用一個M、d則到月份日期為10一下時,只顯示一位,避免出現(xiàn)01月02日的情況。
年可以用四位也可以用二位。
2.JDBC操作
a.連接數(shù)據(jù)庫:
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, userName, password);
Statement stmt = conn .getStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt("userId"));
System.out.println(rs.getString("userName"));
}
posted on 2009-04-03 13:14
楊愛友 閱讀(269)
評論(0) 編輯 收藏 所屬分類:
java相關(guān)技術(shù)