今天又去面試了。哎,現(xiàn)在都開始害怕面試 。自己技術(shù)太差了。。碰的問題,都回答不了。。
1.今天問了個(gè)對象實(shí)例化的幾種方法,左想右想只知道new關(guān)鍵字。。。 后面問了別人才知道通過反射也可以。。。反射這個(gè)東西,倒是知道,但是在這個(gè)問題上,我確怎么也想不到。。還有種是類加載。實(shí)在是看不懂。。
第一種:
Test test=new Test();
第二種:
test=Class.forName(Test).newInstance();
第三種
String interceptorName="org.aaa.Test";
Class interceptorClass=Current.class.getClassLoader().loadClass(interceptorName);
Interceptor inerceptor=(Interceptor)interceptorClass.newInstance();
2.hibernate中session的get與Load方法的區(qū)別。。前一陣還記得,現(xiàn)在忘記。。 都不知道現(xiàn)在還記得些什么東西了。
(1)load方法,hibernate認(rèn)為該id對應(yīng)的對象(數(shù)據(jù)庫記錄)在數(shù)據(jù)庫中是一定存在的,在用到對象中的
其他屬性數(shù)據(jù)時(shí)才查詢數(shù)據(jù)庫,但是萬一數(shù)據(jù)庫中不存在該記錄,只能拋ObjectNotFoundEcception異常
,所說的load方法拋異常是指在使用該對象的數(shù)據(jù)時(shí),數(shù)據(jù)庫中不存在該數(shù)據(jù)時(shí)拋異常,而不是在創(chuàng)建這
個(gè)對象時(shí)。由于session中的緩存對于hibernate來說是個(gè)相當(dāng)廉價(jià)的資源,所以在load時(shí)會(huì)先查一下
session緩存看看該id對應(yīng)的對象是否存在,不存在則創(chuàng)建代理。所以如果你知道該id在數(shù)據(jù)庫中一定有
對應(yīng)記錄存在就可以使用load方法來實(shí)現(xiàn)延遲加載。
(2)get方法,hibernate會(huì)確認(rèn)一下該id對應(yīng)的數(shù)據(jù)是否存在,首先在session緩存中查找,然后在二級緩
存中查找,還沒有就查數(shù)據(jù)庫,數(shù)據(jù)庫中沒有就返回null。
3.spring AOP中對pointcut,advice的概念的理解。。 這個(gè)我是根本就不知道啥玩意,只知道AOP的點(diǎn)點(diǎn)意思。。
4.hibernate的繼承映射包含了哪幾種不同的策略,并說出各自的特點(diǎn)。。HOHO。。這個(gè)問題,還是不知道。。以前讀書的時(shí)候看過點(diǎn)點(diǎn)相關(guān)的內(nèi)容,現(xiàn)在早就忘記的一干二凈了。