A. 分層架構中,層的作用是什麼如果不要層,能不能實現有層時的優點
Dao層又叫數據訪問對象層, 封裝資料庫的底層操作細節如資料庫的連接及對數據的CRUD等操作,它不但屏蔽了數據存儲最終介質的不同,也屏蔽了具體實現技術的不同。一般在其上還會有Service層來封裝業務操作進行進一步的解耦。不用DAO層也能實現Dao層時的優點如自己封裝一個類似Dao層功能的資料庫操作模板類,可參考Spring的DAO層思想。
B. Java的DAO層哪個框架用的比較多mybatis有人用嗎
Ibatis的優勢。
Ibatis是一個混合性的解決方案,吸取了這些所有解決方案中最有價值的思想,並將他們融會貫通.
1) proc(procere) 支持對 procere 的直接調用; 業務邏輯從資料庫中分離出來,程序有更好的移植性。
2) 內聯sql 允許sql以最自然的方式書寫,沒有字元串拼接,沒有參數設置,沒有結果獲取; 對應用程序的代碼沒有任何的影響.
3) o/rm Ibatis有許多o/rm工具一樣的特性,高速緩存,運行時生成代碼,延遲載入等; 可用於任意數據模型和對象模型的組合。javaBean或業務類。
4) 動態 sql Ibatis支持動態sql來處理查詢; 不要求sql被寫成一堆字元串。
Ibatis的特點
o/rm通過java對象和Db之間的映射,而Ibatis通過sql與資料庫的映射,通過sql的查詢參數和結果來和java對象映射
總結:
1 容易上手,小巧
2 生產效力高
3 性能好
4 分工明確
5 支持java,.net,ruby
6 開源
C. Spring 中的Dao的用處
DAO其實是一個數據訪問層的設計機制,並不一定非要在Spring中,在各種框架的系統中,都可以用DAO來簡稱數據訪問層。這層設計,可以靈活的要你訪問各個資料庫數據,緩存數據,檢索數據,提供了各種方法。程序員幾乎只要關注業務模塊中間層的設計,資料庫這塊幾乎處於一種託管狀態。以後系統移植,升級啊,集成其他系統啊,都很方便。維護成本降低很多。
D. Dao層到底是做什麼的service和Dao層有什麼關系說得具體一些。
Dao層:主要是做數據持久層的工作,負責與資料庫進行聯絡的一些任務都封裝在此,DAO層的設計首先是設計DAO的介面,然後就可在模塊中調用此介面來進行數據業務的處理,而不用關心此介面的具體實現類是哪個類,顯得結構非常清晰,DAO層的數據源配置。
層代碼示例:
層和service層關系:service層經常要調用層的方法對數據進行增刪改查的操作,現實開發中,對業務的操作會涉及到數據的操作,而對數據操作常常要用到資料庫,所以service層會經常調用層的方法。
(4)層和緩存擴展閱讀
Service層是建立在DAO層之上的,建立了DAO層後才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應該既調用DAO層的介面,它剛好處於一個中間層的位置。每個模型都有一個Service介面,每個介面分別封裝各自的業務處理方法。
在實際開發中DAO層大多是對某張表進行增刪改查,都是一些固定的語句,除非涉及到更復雜的service層業務邏輯,才可能要添加更復雜的DAO層方法。
E. java 中如何進行頁面緩存
可以在要執行的頁面中通過set方法設置要緩存的內容,之後通過get方式獲取到設置的內容
舉例:
第一個訪問頁面:
request.setAttribute("username",zhangsan");
第二個跳轉頁面:
Srting username = request.getAttribute(''username'');
此時即可獲取到username的存儲信息。
F. java web項目中的介面,實現類和service介面,實現類區別
Dao是數據訪問層,用來保存數據。
Service是業務邏輯處理的。
我們開發程序的目的是為了完成業務功能,理想的情況下程序中的每一條語句都應該是與業務直接相關的,例如程序中不應該出現連接資料庫,讀取某個欄位等純技術性的操作,而應該是得到用戶A的基本信息等具有業務含義的操作.(dataaccessobject)層存在的意義在於將與數據持久化相關的函數調用剝離出去,提供一個具有業務含義的封裝層.原則上說,層與utils等幫助類的功能非常類似,只是更加復雜一些,需要依賴更多的對象(如DataSource,SessionFactory)等.如果不需要在程序中屏蔽我們對於特定數據持久層技術的依賴,例如屏蔽對於Hibernate的依賴,在層我們沒有必要採用介面設計.一些簡單的情況下我們甚至可以取消整個層,而直接調用封裝好的一些通用操作函數,或者調用通用的EntityDao類等.
程序開發的過程應該是從業務對象層開始的,並逐步將純技術性的函數調用剝離到外部的幫助類中,同時我們會逐漸發現一些業務操作的特定組合也具有明確的含義,為了調用的方便,我們會把它們逐步補充到service層中.在一般的應用中,業務邏輯很難穩定到可以抽象出介面的地步,即一個service介面不會對應於兩個不同的實現,在這種情況下使用介面往往也是沒有必要的.
在使用spring的情況下原則上應該避免使用getBean的調用方式,應該盡量通過注入來獲得依賴對象,但有時我們難免需要直接獲取業務對象,在不使用介面的情況下可以採用如下方式
classTaskService{
(){
return(TaskService)BeanLoader.getBean(TaskService.class);
}
}
在程序中我們可以直接使用TaskService.getInstance()來得到TaskService對象.通過命名規范的約定,我們可以從類名推導出spring配置文件中的對象名,因而不需要使用一個額外的硬編碼字元串名.
G. DAO是什麼意思
DAO(數據訪問對象)是一種應用程序編程介面(API),存在於微軟的Visual
Basic中,它允許程序員請求對微軟的Access資料庫的訪問。DAO是微軟的第一個面向對象的資料庫介面。DAO對象封閉了Access的Jet函數。通過Jet函數,它還可以訪問其他的結構化查詢語言(SQL)資料庫。
H. java中層和service層的區別是什麼
層:層叫數據訪問層,全稱為data access object,屬於一種比較底層,比較基礎的操作,具體到對於某個表、某個實體的增刪改查
service層:service層叫服務層,被稱為服務,肯定是相比之下比較高層次的一層結構,相當於將幾種操作封裝起來。
至於為什麼service層要使用介面來定義有以下幾點好處:
在java中介面是多繼承的,而類是單繼承的,如果你需要一個類實現多個service,你用介面可以實現,用類定義service就沒那麼靈活
要提供不同的資料庫的服務時,我們只需要面對介面用不同的類實現即可,而不用重復地定義類
編程規范問題,介面化的編程為的就是將實現封裝起來,然調用者只關心介面不關心實現,也就是「高內聚,低耦合」的思想。
(8)層和緩存擴展閱讀:
Java Web,是用Java技術來解決相關web互聯網領域的技術總和。web包括:web伺服器和web客戶端兩部分。Java在客戶端的應用有java applet,不過使用得很少,Java在伺服器端的應用非常的豐富,比如Servlet,JSP和第三方框架等等。Java技術對Web領域的發展注入了強大的動力。
I. spring自帶緩存機制怎麼弄
此緩存方法既適用於層,也適用於service層。
spring配置文件配置:<!--緩存配置-->
<!--啟用緩存註解功能-->
<cache:annotation-drivencache-manager="cacheManager"/>
<!--spring自己的基於java.util.concurrent.ConcurrentHashMap實現的緩存管理器(該功能是從Spring3.1開始提供)-->
<beanid="cacheManager"class="org.springframework.cache.support.SimpleCacheManager">
<propertyname="caches">
<set>
<!--此處類concurrentMapCacheFactoryBean的作用是
-->
<beanname="myCache"class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"/>
</set>
</property>
</bean>service層示例如下:@Transactional(readOnly=true)
@Cacheable(value="myCache")
publicJsonObjectgetWFK(JsonObjectparams){
OneObob=newOneOb();
try{
List<Map<String,Object>>map=LawAssistantMapper.getWFK();
ob.setOb(map);
}catch(Exceptione){
e.printStackTrace();
ob.setCode(500);
ob.setMsg("伺服器錯誤!!!");
returnnewJsonObject(Json.encode(ob));
}
ob.setCode(200);
ob.setMsg("ok");
logger.debug(Json.encode(ob));
returnnewJsonObject(Json.encode(ob));
}
由於使用的是spring自帶的緩存類,所以,僅僅需要兩步:1.在spring配置文件中聲明,2.在service層,方法代碼前增加註解,即可。
缺點:
spring自帶的緩存功能,實質上是通過java類來保存緩存的數據,這樣會佔用一定的內存消耗,並發率越高,對內存的壓力越大。
碼民直接使用的緩存類:org.springframework.cache.support.SimpleCacheManager,org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean
J. java的DAO層指的是哪一層 持久層又指的是哪一層(hibernate)
DAO層就是持久層,就是操作資料庫的部分。