六、框架使用
1.描述一下Hibernate的三個狀態(tài)?

2.Spring中Bean的生命周期。

3.SpringMVC或Struts處理請求的流程。

4.Spring AOP解決了什么問題?怎么實現(xiàn)的?
面向切面編程,可以在某一些方法執(zhí)行之前或之后執(zhí)行一些方法。
5.Spring事務的傳播屬性是怎么回事?它會影響什么?

- 未提交讀(Read Uncommitted):允許臟讀,也就是可能讀取到其他會話中未提交事務修改的數(shù)據(jù)
- 提交讀(Read Committed):只能讀取到已經(jīng)提交的數(shù)據(jù)。Oracle等多數(shù)數(shù)據(jù)庫默認都是該級別 (不重復讀)
- 可重復讀(Repeated Read):可重復讀。在同一個事務內(nèi)的查詢都是事務開始時刻一致的,InnoDB默認級別。在SQL標準中,該隔離級別消除了不可重復讀,但是還存在幻象讀,但是innoDB解決了幻讀
- 串行讀(Serializable):完全串行化的讀,每次讀都需要獲得表級共享鎖,讀寫相互都會阻塞
其中spring七個事務傳播屬性:
- PROPAGATION_REQUIRED -- 支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
- PROPAGATION_SUPPORTS -- 支持當前事務,如果當前沒有事務,就以非事務方式執(zhí)行。
- PROPAGATION_MANDATORY -- 支持當前事務,如果當前沒有事務,就拋出異常。
- PROPAGATION_REQUIRES_NEW -- 新建事務,如果當前存在事務,把當前事務掛起。
- PROPAGATION_NOT_SUPPORTED -- 以非事務方式執(zhí)行操作,如果當前存在事務,就把當前事務掛起。
- PROPAGATION_NEVER -- 以非事務方式執(zhí)行,如果當前存在事務,則拋出異常。
- PROPAGATION_NESTED -- 如果當前存在事務,則在嵌套事務內(nèi)執(zhí)行。如果當前沒有事務,則進行與PROPAGATION_REQUIRED類似的操作。
五個隔離級別:
ISOLATION_DEFAULT 這是一個PlatfromTransactionManager默認的隔離級別,使用數(shù)據(jù)庫默認的事務隔離級別.
另外四個與JDBC的隔離級別相對應;ISOLATION_READ_UNCOMMITTED 這是事務最低的隔離級別,它充許別外一個事務可以看到這個事務未提交的數(shù)據(jù)。
這種隔離級別會產(chǎn)生臟讀,不可重復讀和幻像讀。ISOLATION_READ_COMMITTED 保證一個事務修改的數(shù)據(jù)提交后才能被另外一個事務讀取。另外一個事務不能讀取
該事務未提交的數(shù)據(jù)。這種事務隔離級別可以避免臟讀出現(xiàn),但是可能會出現(xiàn)不可重復讀和幻像讀。ISOLATION_REPEATABLE_READ 這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現(xiàn)幻像讀。它除了保證
一個事務不能讀取另一個事務未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復讀)。ISOLATION_SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執(zhí)行。除了防止臟讀,
不可重復讀外,還避免了幻像讀。
關鍵詞:
- 1)幻讀:事務1讀取記錄時事務2增加了記錄并提交,事務1再次讀取時可以看到事務2新增的記錄;
- 2)不可重復讀?。菏聞?讀取記錄時,事務2更新了記錄并提交,事務1再次讀取時可以看到事務2修改后的記錄;
- 3)臟讀:事務1更新了記錄,但沒有提交,事務2讀取了更新后的行,然后事務T1回滾,現(xiàn)在T2讀取無效。
6.Spring中BeanFactory和FactoryBean有什么區(qū)別?
- BeanFactory
BeanFactory,以Factory結尾,表示它是一個工廠類(接口),用于管理Bean的一個工廠。在Spring中,BeanFactory是IOC容器的核心接口,它的職責包括:實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。
Spring為我們提供了許多易用的BeanFactory實現(xiàn),XmlBeanFactory就是常用的一個,該實現(xiàn)將以XML方式描述組成應用的對象及對象間的依賴關系。XmlBeanFactory類將持有此XML配置元數(shù)據(jù),并用它來構建一個完全可配置的系統(tǒng)或應用。
- FactoryBean
以Bean結尾,表示它是一個Bean,不同于普通Bean的是:它是實現(xiàn)了FactoryBean<T>接口的Bean,根據(jù)該Bean的ID從BeanFactory中獲取的實際上是FactoryBean的getObject()返回的對象,而不是FactoryBean本身,如果要獲取FactoryBean對象,請在id前面加一個&符號來獲取。
例如自己實現(xiàn)一個FactoryBean,功能:用來代理一個對象,對該對象的所有方法做一個攔截,在調用前后都輸出一行LOG,模仿ProxyFactoryBean的功能。
7.Spring框架中IOC的原理是什么?
控制反轉,Spring統(tǒng)一管理Bean
8.spring的依賴注入有哪幾種方式
三種依賴注入方式,即構造方法注入(constructor injection),setter方法注入(setter injection)以及接口注入(interface injection).
9.struts工作流程

10.用Spring如何實現(xiàn)一個切面?
配置AOP
11.Spring 如何實現(xiàn)數(shù)據(jù)庫事務?
@Transaction
12.Hibernate對一二級緩存的使用,Lazy-Load的理解;
13.mybatis如何實現(xiàn)批量提交?
目錄列表
一、數(shù)據(jù)結構與算法基礎
二、Java基礎
三、JVM
四、多線程/并發(fā)
五、Linux使用與問題分析排查
六、框架使用
七、數(shù)據(jù)庫相關
八、網(wǎng)絡協(xié)議和網(wǎng)絡編程
九、Redis等緩存系統(tǒng)/中間件/NoSQL/一致性Hash等
十、設計模式與重構
本文是針對知乎文章《成為Java頂尖程序員,先過了下面問題》的解答