傳統的JDBC編程步驟:web
一、使用JDBC編程需鏈接數據庫,註冊驅動和數據庫信息spring
二、操做Connection,打開Statement對象數據庫
三、經過Statement執行SQL,返回到ResultSet對象apache
四、使用ResultSet讀取數據,同事轉換爲具體的POJO對象編程
五、關閉數據庫相關資源json
缺點:緩存
一、工做量大mybatis
二、對JDBC編程可能產生異常進行處理並正確關閉資源mvc
(全自動——小中型公司適用)Hibernate框架使用:app
一、於傳統JDBC編程而言消除了代碼的映射規則,並分離到XML或註解裏去配置
二、無需再管理數據庫鏈接
三、藉助SessionFactory對象對數據庫的表進行操做——ORM
四、一個會話中,不要操做多個對象,只要操做Session對象便可
五、關閉資源只需關閉一個Session對象便可
缺點:
一、全表映射可能帶來不便,如更新時需發送全部的字段
二、沒法根據不一樣的條件組裝不一樣的SQL
三、對多表關聯和複雜SQL查詢支持較差,需本身寫SQL,返回時本身需組裝成具體的POJO
四、不能有效支持存儲過程
五、如有HQL,但性能較差
(半自動——大公司適用)MyBatis框架使用:
一、需手工匹配提供POJO、SQL和映射關係
二、藉助SqlSessionFactory對象對數據庫的表進行操做——ORM
三、接口編程映射器只需一個接口和映射文件即可運行
四、具備高度靈活、可優化、易維護等特色
缺點:
一、自寫SQL代碼
二、獲取SqlSessionFactory對象有兩種方法,一種是XML配置獲取(編碼硬代碼、便之後期維護),另外一種是代碼獲取
三、手動建立表
映射器是有Java接口和XML文件共同組成的(定義參數類型、描述緩存、描述SQL語句、定義查詢結果和POJO的映射關係)
關於SqlSession和Mapper是MyBatis的核心內容和難點
Log4j簡介
Log4j有三個主要組件:Loggers(記錄器),Appenders(輸出源)、Layouts(佈局)
一、Loggers組件在系統中分爲五個級別:DEBUG<INFO<WARN<ERROR<FATAL
二、Appenders組件經常使用的類有:org.apache.log4j.ConsoleAppender(控制檯)、org.apache.log4j.FileAppender(文件)、org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)、org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)、org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
三、Layouts組件經常使用的類有:org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式)
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等信息)
經常使用模板:(log4j.properties)
log4j.rootLogger=DEBUG , stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
反射技術和動態代理
通常的動態代理分爲兩種,一種是JDK反射機制提供的代理,另外一種是CGLIB代理
Spring框架已經成爲JAVA世界最爲流行的IOC(反轉控制)和AOP(面向切面編程)
特色:更好的使業務層和模式層以及業務層和操做實體對象層(dao層)分離,「高內聚,低耦合」
IOC注入方式(反轉控制):
一、構造方法注入
二、setter注入
三、接口注入
AOP(面向切面編程):最大的用處是事務的控制
數據庫
項目 髒讀 不可重讀(同一條記錄) 幻讀
髒讀 √ √ √
讀寫提交 × √ √
可重複讀 × × √
序列化 × × ×
Oracle數據庫只支持讀寫提交和序列化(默認隔離級別爲讀寫提交),MySQL數據庫默認隔離級別爲可重複讀
避免數據的髒讀、不可重讀、和幻讀最佳選擇是「序列化」即實現Serializable接口
SpringMVC框架它的核心是DispatcherServlet,Servlet將根據攔截的配置去攔截一些請求
附:Strust2框架它的核心是FilterDispatcher,Servlet將根據攔截的配置去攔截一些請求
@ResponseBody//標註把結果轉換爲JSON數據--需配置
配置:
<bean class=」org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdaper」>
<property name=」messageConverters」>
<list>
<ref bean=」mappingJacksonHttpMessageConverter」/>
</list>
</property>
</bean>
//配置JSON類型
<bean id=「mappingJacksonHttpMessageConverter」 class=」org.springframework.http.converter.json.MappingJacksonHttpMessageConverter」>
<property name=」messageConverters」>
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
配置MyBatis-Spring分爲下面幾個部分
一、配置數據源
二、配置SqlSessionFactory
三、配置SqlSessionTemplate
四、配置Mapper
五、事務處理