2016-11-23 7 views
0

In meinem aktuellen Frühjahr Setup Ich mag würde eine etwas andere Architektur implementieren, hier ist mein Setup:Java - Frühling Datenzugriffsobjektimplementierung

ich eine „Basis“ DAO-Schnittstelle, die alle CRUD-Operationen aufgeführt:

public interface BaseDao { 

    public boolean create(Object obj); 

    public List<Object> read(); 

    public boolean update(Object obj); 

    public boolean delete(Object obj); 

} 

Next i "spezifische" DAO-Schnittstelle, die von der "Basis" einer erweitert:

public interface ArticleDao extends BaseDao { 

    public List<Article> getArticlesByAttribute(String attribute); 

} 

Und schließlich das Repository, das die Schnittstelle implementiert:

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 
    } 
} 

Die Idee ist einfach:

ich jedes Repository wollen alle CRUD-Operationen + „die Methoden aus der spezifischen dao-Schnittstelle“

zu implementieren, aber ich erhalte den folgenden Fehler:

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

etc ..

so ist es wahrscheinlich, weil ich Objekt als Abs Zähler in der Schnittstelle und "Artikel" als Parameter in der aktuellen Implementierung.

Hat jemand die Idee, wie ich dieses Muster richtig folgen kann? Soll ich mit Generika arbeiten?

Danke und Grüße

Antwort

1

Nein, Sie sollten mit Spring Data JPA arbeiten/MongoDB usw. Es werden die meisten Ihrer Standardcode weggehen. Ernsthaft - vergessen Sie DAO und gehen Sie mit Spring Data JPA: https://spring.io/guides/gs/accessing-data-jpa/

+0

einfach perfekte Lösung, danke :) –

+0

Keine Notwendigkeit, das Rad neu zu erfinden;) –

+0

mhm, aber was ist mit Hibernate, wie kann ich es in diesem Zusammenhang integrieren? Ich meine, ich habe Hibernate nur zum Abfragen/Speichern von Daten installiert, brauche ich es jetzt sogar? –