2016-06-07 90 views
0

我正在編寫一個應該能夠與多個數據庫一起工作的微服務。
例如,假設項目A與MongoDB一起工作,那麼我的服務應該知道如何連接和工作(查詢,存儲等...)與MongoDB(或任何其他SQL數據庫)。如何在Java中使用DAO訪問數據庫

我看了this文件由Oracle解釋DALDAO模型編寫的,但據我所知,我需要實現各種查詢,我想執行的每一個方法。

例如,假設我有這個類:

public class Account { 

private String userName; 
private String firstName; 
private String lastName; 
private String email; 
private int age; 

} 

由於從鏈接總結以上,爲此我要執行我需要寫在DAO接口函數(如DB每次查詢網關),即:

getAccountByEmail(...) 
getAccountByUsername(...) 
getAccountByUsernameAndEmail(...) 

這在我看來像一個壞方法,這將導致太多的方法來處理。
還有模型不包含的查詢字段。例如,如果我的模型具有創建日期並且我想在兩個日期之間查詢該對象,則需要一種方法來查詢這些字段的數據庫。

我一直在尋找一段時間,但我找不到指南或最佳做法來解決這個問題。
我想知道是否有任何其他方式來解決這個問題,但實施每種方法。

+0

如果您正在尋找一些即食餐,那麼可以考慮使用Spring-data(http://projects.spring.io/spring-data/)。 – Apollo

回答

1

正如Appolo在評論中提到的那樣,Spring Data Mongo DB可能會解決您不必實現每種方法的問題之一。但是,您仍然可能需要在界面中聲明該方法。使用Spring Data Mongo DB,首先必須定義應該擴展MongoRepository的接口(不是類)。假設您的主ID是字符串例如:

public Interface AccountDAO extends MongoRepository<Account, String> { 
    Account getAccountByEmail(String email); 
    Account getAccountByUserName(String userName); 
} 

請記住,方法中'By'之後的單詞應該與您的模型中的字段匹配。你也可以使用'And'結合多個字段。

Account getAccountByUserNameAndEmail(String userName, String email); 

您可以在MongoDb Spring data documentation中找到支持的查詢關鍵詞。 如果你想要在Spring Data Mongo DB中找不到實現的其他方法,可以實現你的接口並覆蓋它們。