① J2EE當前持久層設計常見問題
J2EE當前持久層設計常見問題
當前J2EE項目中,面臨的一個共同問題就是如果控制事務的並發訪問,雖然有些持久層框架已經為我們做了很多工作,但是理解原理,對於我們開發來說還是很有用處的。下面我為大家整理了J2EE當前持久層設計的常見問題,一起來看看吧:
事務並發訪問控制策略
當前J2EE項目中,面臨的一個共同問題就是如果控制事務的並發訪問,雖然有些持久層框架已經為我們做了很多工作,但是理解原理,對於我們開發來說還是很有用處的。
事務並發訪問主要可以分為兩類,分別是同一個系統事務和跨事務訪問的並發訪問控制,其中同一個系統事務可以採取樂觀鎖以及悲觀鎖策略,而跨多個系統事務時則需要樂觀離線鎖和悲觀離線鎖。在討論這四種並發訪問控制策略之前,先需要明確一下資料庫事務隔離級別的問題,ANSI標准規定了四個資料庫事務隔離級別,它們分別是:
讀取未提交(Read Uncommitted)
這是最低的事務隔離級別,讀事務不會阻塞讀事務和寫事務,寫事務也不會阻塞讀事務,但是會阻塞寫事務。這樣造成的一個結果就是當一個寫事務沒有提交的時候,讀事務照樣可以讀取,那麼造成了臟讀的現象。
讀取已提交(Read Committed)
採用此種隔離界別的.時候,寫事務就會阻塞讀事務和寫事務,但是讀事務不會阻塞讀事務和寫事務,這樣因為寫事務會阻塞讀取事務,那麼從而讀取事務就不能讀到臟數據,但是因為讀事務不會阻塞其它的事務,這樣還是會造成不可重復讀的問題。
可重復讀(Repeatable Read)
採用此種隔離級別,讀事務會阻塞寫事務,但是讀事務不會阻塞讀事務,但是寫事務會阻塞寫事務和讀事務。因為讀事務阻塞了寫事務,這樣以來就不會造成不可重復讀的問題,但是這樣還是不能避免幻影讀問題。
序列化(serializable)
此種隔離級別是最嚴格的隔離級別,如果設置成這個級別,那麼就不會出現以上所有的問題(臟讀,不可重復讀,幻影讀)。但是這樣以來會極大的影響到我們系統的性能,因此我們應該避免設置成為這種隔離級別,相反的,我們應該採用較低的隔離界別,然後再採用並發控制策略來進行事務的並發訪問控制)。
延伸閱讀:Java EE容器組成:
Web容器:包括Jsp與Servlet組件,可使用EJB中的組件完成復雜的商務邏輯;
EJB容器:包含組件EJB, EJB規范定義了一個開發和部署分布式商業邏輯的框架;
Applet容器 包含組件Applet,即可使用J2SE開發Applet;
Application Client容器:包含組件Application Client。
現在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等等。下面對這四種Java EE容器進行了一番簡單的比對。
1. Tomcat
Tomcat是Apache鼎力支持的Java Web應用伺服器,由於它優秀的穩定性以及豐富的文檔資料,廣泛的使用人群,從而在開源領域受到最廣泛的青睞。
2. Jboss
Jboss作為Java EE應用伺服器,它不但是Servlet容器,而且是EJB容器,從而受到企業級開發人員的歡迎,從而彌補了Tomcat只是一個Servlet容器的缺憾。
3. Resin
Resin也僅僅是一個Servlet容器,然而由於它優秀的運行速度,使得它在輕量級Java Web領域備受喜愛,特別是在互聯網Web服務領域,眾多知名公司都採用其作為他們的Java Web應用伺服器,譬如163、ku6等。
在商用應用伺服器里主要有:Weblogic、Websphere,其中Weblogic我也使用過很長一段時間,當時也只用其當Servlet容器,然而就在同等條件下,在性能及易用性等方面,要比Tomcat優秀很多。
4.glassfish
glassfish是Sun公司推出的Java EE伺服器(Java EE容器),一個比較活躍的開源社區,不斷的通過社區的反饋來提高其的可用性,經過glassfish v1 glassfish v2 到今天的glassfish v3 ,它已經走向成熟。Glassfish是一個免費、開放源代碼的應用服務,它實現了Java EE 5,Java EE 5 平台包括了以下最新技術:EJB 3.0、JSF 1.2、Servlet 2.5、
JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等。
支持集群,通過內存中會話狀態復制,增強了部署體系結構的可用性與可伸縮性,它對集群有著很好的支持,可以簡單到通過添加機器,就可輕松的提高網站的帶負載能力,在解析能力方面,它對html的吞吐能力與apache伺服器不分上下,就是tomcat所不能比的,支持目錄部署,熱部署,解決了tomcat對熱部署能力的缺陷。
在版本方面做的更加人性化,有開發時用的簡化版,專門用於部署web項目的版本,還要完全符合j2ee標準的版本。
;② java持久層框架就是資料庫框架嗎
你先理解一下持久層的意思吧,看一看mvc架構對你理解持久層比較有幫助,資料庫一般不說資料庫框架,對資料庫操作的框架就是持久層框架
③ 常用的javaWeb持久層框架有哪些
是的,一般企業中用的比較多的是 mybatis,因為對其sql可是實現很好的控制,然而hibernate就顯得太智能了,你無法看到後台sql是怎麼執行的,這對於一個具有完全掌控欲的程序員來說是不可容忍的。。而且後台多多表查詢的xml配置還需要另外的學習成本,java api提供的jdbc就稍微功能不足,有點麻煩。。但是遇到像幾十萬條數據要插入資料庫,那麼所有的框架都無能為力了,這個時候jdbc就顯得更好了。。
④ 什麼是持久層框架,持久兩個字該怎麼去理解
從字面上理解的話,就是一直存在,直到你更新為止。
在應用上來說,會使用序列化的方式保存數據,在使用時LOAD進來。
⑤ 基於web和基於ssm的區別
基於web和基於ssm的區別分別是:
基於Java Web常見的三層結構是:
1、表現層:也就是Web層,常見的框架有Spring MVC、Struts2 ,並包括用於展示的界面,如JSP界面;
2、業務層:Service層,專注於業務邏輯的實現;
3、持久層:也叫Dao層,常見的框架是Hibernate、MyBatis。負責與資料庫的交互,封裝資料庫的訪問細節。
從資料庫表中讀取載入數據並實例化領域對象(Domian Object)也就是從資料庫中讀取數據,或者返過來將領域對象實例化到資料庫中,也就是將數據寫入到資料庫中。
Java在SSM框架中的體現是:
1、POJO層: 由一組POJO組成,是對系統各種對象的抽象表達。
2、DAO層: 負責資料庫的訪問,增、刪、改、查等,在MyBatis框架中也常被定義為Mapper層。
3、Service層:由業務邏輯對象組成,是不同系統的業務邏輯的具體實現。
4、Controller層:由控制器組成,對來自瀏覽器的用戶請求進行攔截,並調用Service層的響應的業務邏輯組件處理用戶請求,並轉發返回結果到View層。
5、View層:由JSP界面,PDF文檔等組件組成,用於顯示系統對用戶請求的處理結果。
SSM框架中各框架的作用是:
1、MyBatis:持久層框架,負責資料庫訪問。
2、Spring MVC:表現層框架,把模型、視圖、控制器分離,組合成一個靈活的系統。
3、Spring: 整合項目的所有框架,管理各種Java Bean(mapper、service、controller),事務控制。