關閉→
當前位置:知科普>綜合知識>mvcdao層,service層到底怎麼寫 - dao和service怎麼寫0

mvcdao層,service層到底怎麼寫 - dao和service怎麼寫0

知科普 人氣:2.31W
1.mvc dao層,service層 到底怎麼寫

我們都知道,標準主流現在的編程方式都是採用MVC綜合設計模式,MVC本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦説的意思是你更改某一層代碼,不會影響我其他層代碼,如果你會像spring這樣的框架,你會了解面向接口編程,表示層調用控制層,控制層調用業務層,業務層調用數據訪問層。

dao和service怎麼寫0 mvcdao層,service層到底怎麼寫

初期也許都是new對象去調用下一層,比如你在業務層new一個DAO類的對象,調用DAO類方法訪問數據庫,這樣寫是不對的,因為在業務層中是不應該含有具體對象,最多隻能有引用,如果有具體對象存在,就耦合了。當那個對象不存在,我還要修改業務的代碼,這不符合邏輯。

好比主板上內存壞了,我換內存,沒必要連主板一起換。我不用知道內存是哪家生產,不用知道多大容量,只要是內存都可以插上這個接口使用。

這就是MVC的意義。接下來説你感覺service的意義,其實因為你現在做東西分層次不是那麼嚴格,在一個你們做東西業務本身也少,舉個最簡單的例子,你做一個分頁的功能,數據1000條,你20條在一個頁,你可以把這個功能寫成工具類封裝起來,然後在業務層裏調用這個封裝的方法,這才是業務裏真正幹得事,只要沒訪問數據庫的,都要在業務裏寫。

再有不明白的追問,這是經驗問題,呵呵,其實以後你就會懂。只是剛開始寫的代碼都是有個請求,我就去數據庫取,業務幾乎沒有。

------------------------------------------------------------------------------雖然每分,但還是把自己的理解給LZ説説。怎麼説呢,我不是理論帝。

所以我講講自己的理解比説你現在用的是SSH框架,做一個用户模塊:1、假設現在你做這個功能會用到user表和權限表,那麼你前台的頁面訪問action,action再去調用用户模塊service,用户模塊service判斷你是操作user表還是權限表,如果你操作的是user表則service的實現類就去調用userDAO。如果是操作的是權限表則調用權限的DAO2、也就是説DAO一定是和數據庫的每張表一一對應,而service則不是。

明白的沒?其實你一個項目一個service和一個DAO其實也一樣可以操作數據庫,只不過那要是表非常多,出問題了,那找起來多麻煩,而且太亂了3、好處就是你的整個項目非常系統化,和數據庫的表能一致,而且功能模塊化,這樣以後維護或者改錯比較容易,性能也高一些--------------------------------------------------------------------------簡單的説DAO層是跟數據庫打交道的,service層是處理一些業務流程的,至於你説的為什麼要用service層封裝,我認為:一般來説,某一個程序的有些業務流程需要連接數據庫,有些不需要與數據庫打交道而直接是一些業務處理,這樣就需要我們整合起來到service中去,這樣可以起到一個更好的開發與維護的作用,同時也是MVC設計模式中model層功能的體現-------------------------------------------------------------------------------初級DAO模式:例如::寫一個類 操作1張表 針對這張表的所有操作都以方法的形式寫在這個類中 1個操作對應1個方法要求是外部通過調用這個類的方法達到操作某張表的目的時不需要寫任何和數據庫以及JDBC相關的代碼,這個類的命名就是XXDAO比如表叫做 t_goods 商品表那麼操作它的DAO就叫GoodsDAO高級DAO模式:例如:即DAO工廠模式,多個XXDAO實現同一個接口或者繼承同一個基類,編寫一個工廠類通過工廠模式(簡單工廠模式或利用反射動態加載均可)獲得接口或基類對象,內部實際上封裝返回的是具體的XXDAO類的對象。簡單的説即是在1的基礎上將創建具體的XXDAO對象的方式由new變為工廠模式實現例如:UserDAO dao = DAOFactory.create(。

);dao.save()dao.delete。.-------------------------------------------------------------------------1.有一個dao接口,裏面有平時的增刪查該的方法2.有一個具體的實體類3.有一個dao的實現類,有對實體操作的方法,繼承1的接口4.如果有需要,還可以有一個工廠類,負責生產dao實現類---------------------------------------------------------------------------DAO層一般有接口和該接口的實現類! 接口用於規範實現類! 實現類一般用於用於操作數據庫! 一般操作修改,添加,刪除數據庫操作的步驟很相似,就寫了一個公共類DAO類 ,修改,添加,刪除數據庫操作時 直接調用公共類DAO類!-----------------------------------------------------------------------------com.公司名.系統名.模塊名 代碼目錄結構Action : 負責頁面邏輯,將調用service的結果返回到頁面中Service : 接口定義---impl 接口的實現,負責業務邏輯Domain 對應數據庫表的pojoDao : 只負責連接數據庫,從數據庫中查詢結果,包裝成對象後返回util :工具類。

2.Dao層到底是做什麼的

Dao層:主要是做數據持久層的工作,負責與數據庫進行聯絡的一些任務都封裝在此,DAO層的設計首先是設計DAO的接口,然後就可在模塊中調用此接口來進行數據業務的處理,而不用關心此接口的具體實現類是哪個類,顯得結構非常清晰,DAO層的數據源配置。

dao層代碼示例:

service層:主要負責業務模塊的邏輯應用設計,Service層的業務實現,具體要調用到已定義的DAO層的接口,封裝Service層的業務邏輯有利於通用的業務邏輯的獨立性和重複利用性,程序顯得非常簡潔。

service層代碼示例:

dao層和service層關係:service層經常要調用dao層的方法對數據進行增刪改查的操作,現實開發中,對業務的操作會涉及到數據的操作,而對數據操作常常要用到數據庫,所以service層會經常調用dao層的方法。

擴展資料

Service層是建立在DAO層之上的,建立了DAO層後才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應該既調用DAO層的接口,它剛好處於一箇中間層的位置。每個模型都有一個Service接口,每個接口分別封裝各自的業務處理方法。

在實際開發中DAO層大多是對某張表進行增刪改查,都是一些固定的語句,除非涉及到更復雜的service層業務邏輯,才可能要添加更復雜的DAO層方法。

參考資料:搜狗百科-DAO

3.Dao層方法怎麼寫

dao完成連接數據庫修改刪除添加等的實現細節,例如sql語句是怎麼寫的,怎麼把對象放入數據庫的

service層是面向功能的,一個個功能模塊比如説銀行登記並完成一次存款,UI要把請求給service層,然後service曾將這一個case分解成許多步驟調用底層的實現完成這次存款,dao就是下面那層

dao就是把數據存起來,之所以service的方法會有雷同只不過是因為service得需求不是很複雜不用再service裏面完成太多包裝或者處理過程可以直接調用dao的方法就完成的請求處理例如就要save一個對象,而這個對象是封裝好的,dao裏面有個方法專門save封裝好的對象於是service的方法就僅僅調用一下就o了,函數簽名自然很像了

service不能直接接觸持久層,而dao是持久層或者直接訪問持久層

有的時候只是為了分層清楚,為了將來scale up的時候方便我們才把service和dao分開,其實沒必要分開的

4.使用java SSH寫通用dao層和service層

import java.io.Serializable;

import java.util.List;

import java.util.Map;

public interface ICommonDao {

public Serializable save(Object entity);

public void update(Object entity);

public void merge(Object entity);

public void delete(Object entity);

public Object findObject(Class clazz, Serializable id);

public List findList(String queryString);

public List findList(String queryString, Map args);

public Object findUniqueResult(String hql);

public List findList(final String hql, final int num);

}

import java.io.Serializable;

import java.util.List;

import java.util.Map;

public interface ICommonService {

public Serializable save(Object entity);

public void update(Object entity);

public void merge(Object entity);

public void delete(Object entity);

public Object findObject(Class clazz, Serializable id);

public List findList(String queryString);

public List findList(String queryString, Map args);

public Object findUniqueResult(String hql);

public List findList(final String hql, final int num);

}

實現類,用CommonDaoImpl實現ICommonDao

用CommonServiceImpl實現ICommonService

實現的時候直接調用hibernateTemplate中的方法就行,或者自己寫點兒,都不難

5.java中dao層和service層的區別是什麼

首先解釋面上意思,service是業務層,dao是數據訪問層。

呵呵,這個問題我曾經也有過,記得以前剛學編程的時候,都是在service裏直接調用dao,service裏面就new一個dao類對象,調用,其他有意義的事沒做,也不明白有這個有什麼用,參加工作久了以後就會知道,業務才是工作中的重中之重。

我們都知道,標準主流現在的編程方式都是採用MVC綜合設計模式,MVC本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦説的意思是你更改某一層代碼,不會影響我其他層代碼,如果你會像spring這樣的框架,你會了解面向接口編程,表示層調用控制層,控制層調用業務層,業務層調用數據訪問層。初期也許都是new對象去調用下一層,比如你在業務層new一個DAO類的對象,調用DAO類方法訪問數據庫,這樣寫是不對的,因為在業務層中是不應該含有具體對象,最多隻能有引用,如果有具體對象存在,就耦合了。當那個對象不存在,我還要修改業務的代碼,這不符合邏輯。好比主板上內存壞了,我換內存,沒必要連主板一起換。我不用知道內存是哪家生產,不用知道多大容量,只要是內存都可以插上這個接口使用。這就是MVC的意義。

接下來説你感覺service的意義,其實因為你現在做東西分層次不是那麼嚴格,在一個你們做東西業務本身也少,舉個最簡單的例子,你做一個分頁的功能,數據1000條,你20條在一個頁,你可以把這個功能寫成工具類封裝起來,然後在業務層裏調用這個封裝的方法,這才是業務裏真正幹得事,只要沒訪問數據庫的,都要在業務裏寫。

再有不明白的追問,這是經驗問題,呵呵,其實以後你就會懂。只是剛開始寫的代碼都是有個請求,我就去數據庫取,業務幾乎沒有。

6.java裏面service和dao一般是什麼關係

service一般組合多個dao完整一個業務邏輯,比如:

@Service("customerInfoAdapter")

public class implements ICustomerInfoAdapter {

@Resource

private ICustomerInfoDao customerInfoDao;

@Resource

private ILoanRecordDao loanRecordDao;

@Resource

private SqlSessionFactory sqlSessionFactory;

/*

* (non-Javadoc)

*

* @see

* com.sfdai.financing.dao.service.ICustomerInfoAdapter#queryByCifno(java

* .lang.String)

*/

@Override

public CustomerInfo queryByCifno(String cifno) {

try {

return customerInfoDao.queryByCifno(cifno);

} catch (Exception e) {

throw new SfdaiException(ResultCode.QUERY_EXCEPTION, e);

}

}

@Override

public CustomerInfo queryByMemberNo(long memberNo) {

return customerInfoDao.queryByMemberNo(memberNo);

}

@Override

public List<CustomerInfo> queryByEmpId(String empId) {

try {

return customerInfoDao.queryByEmpId(empId);

} catch (Exception e) {

throw new SfdaiException(ResultCode.QUERY_EXCEPTION, e);

}

}

}

7.java中dao層和service層的區別,為什麼要用service

dao全稱Data Access Object,數據訪問對象,是一種設計模式。

程序裏是專門負責與數據庫進行交互,進行增刪改查的部分。

service層則是處理業務需求的部分。

之所以不把這兩部分寫在一起是為了解耦和

舉個例子,有很多不同的功能可能會用到相同的訪問數據庫的方法

後台接收到前台傳來的參數,分給不同的service層方法進行實現

service層方法再根據業務需求調用dao層的方法訪問數據庫獲取數據

分成service和dao兩層可以使得一些方法不用重複寫,提高代碼複用性

8.DAO層與service層之間的交互是怎麼實現的

首先這是現在最基本的分層方式,結合了SSH架構。

modle層就是對應的數據庫表的實體類。Dao層是使用了Hibernate連接數據庫、操作數據庫(增刪改查)。

Service層:引用對應的Dao數據庫操作,在這裏可以編寫自己需要的代碼(比如簡單的判斷)。Action層:引用對應的Service層,在這裏結合Struts的配置文件,跳轉到指定的頁面,當然也能接受頁面傳遞的請求數據,也可以做些計算處理。

以上的Hibernate,Struts,都需要注入到Spring的配置文件中,Spring把這些聯繫起來,成為一個整體。

9.java中dao層和service層的區別是什麼

首先解釋面上意思,service是業務層,dao是數據訪問層。

呵呵,這個問題我曾經也有過,記得以前剛學編程的時候,都是在service裏直接調用dao,service裏面就new一個dao類對象,調用,其他有意義的事沒做,也不明白有這個有什麼用,參加工作久了以後就會知道,業務才是工作中的重中之重。

我們都知道,標準主流現在的編程方式都是採用MVC綜合設計模式,MVC本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦説的意思是你更改某一層代碼,不會影響我其他層代碼,如果你會像spring這樣的框架,你會了解面向接口編程,表示層調用控制層,控制層調用業務層,業務層調用數據訪問層。初期也許都是new對象去調用下一層,比如你在業務層new一個DAO類的對象,調用DAO類方法訪問數據庫,這樣寫是不對的,因為在業務層中是不應該含有具體對象,最多隻能有引用,如果有具體對象存在,就耦合了。當那個對象不存在,我還要修改業務的代碼,這不符合邏輯。好比主板上內存壞了,我換內存,沒必要連主板一起換。我不用知道內存是哪家生產,不用知道多大容量,只要是內存都可以插上這個接口使用。這就是MVC的意義。

接下來説你感覺service的意義,其實因為你現在做東西分層次不是那麼嚴格,在一個你們做東西業務本身也少,舉個最簡單的例子,你做一個分頁的功能,數據1000條,你20條在一個頁,你可以把這個功能寫成工具類封裝起來,然後在業務層裏調用這個封裝的方法,這才是業務裏真正幹得事,只要沒訪問數據庫的,都要在業務裏寫。

再有不明白的追問,這是經驗問題,呵呵,其實以後你就會懂。只是剛開始寫的代碼都是有個請求,我就去數據庫取,業務幾乎沒有。

TAG標籤:#dao #mvcdao #service #