2016-11-23 4 views
0

В моей текущей установки пружинного я хотел бы реализовать несколько иную архитектуру, здесь моя установка:Java - Spring реализация объекта доступа к данным

У меня есть «базовый» DAO интерфейс, в котором перечислены все операции CRUD:

public interface BaseDao { 

    public boolean create(Object obj); 

    public List<Object> read(); 

    public boolean update(Object obj); 

    public boolean delete(Object obj); 

} 

Далее я есть "специфическое" ДАО интерфейс, который простирается от "базы" один:

public interface ArticleDao extends BaseDao { 

    public List<Article> getArticlesByAttribute(String attribute); 

} 

И, наконец, Repository, который реализует интерфейс:

public class ArticleDaoImpl implements ArticleDao { 

    public boolean create(Article article) { 
     // code 
    } 

    public List<Article> read() { 
     // code 
    } 

    public boolean update(Article article) { 
     // code 
    } 

    public boolean delete(Article article) { 
     // code 
    } 

    public List<Article> getArticlesByAttribute(String attribute) { 
     // code 
    } 
} 

Так идея проста:

Я хочу, чтобы каждый Repository выполнять все операции Crud + «Методы от конкретного дао-интерфейса»

Но я получаю следующее сообщение об ошибке:

ArticleDaoImpl is not abstract and does not override 
abstract method delete(java.lang.Object) in BaseDao 

и т.д ..

так что это, возможно, потому, что я определен объект как пункт метр в интерфейсе и «Статья» в качестве параметра в фактической реализации.

Кто-нибудь понял, как я могу правильно следовать этому шаблону? Должен ли я рассматривать работу с дженериками?

Спасибо и привет

ответ

1

Нет, вы должны работать с Spring Data JPA/MongoDB и т.д. Это сделает большую часть вашего шаблонного кода уйти. Серьезно - забудьте о DAO и пойдите с Spring Data JPA: https://spring.io/guides/gs/accessing-data-jpa/

+0

просто отличное решение, спасибо :) –

+0

Не нужно изобретать колесо;) –

+0

mhm, но как насчет спящего режима, как я могу интегрировать его в этом контексте? Я имею в виду, я установил hibernate только для запроса/сохранения данных, мне даже нужно это сейчас? –