Questo post è inspirato dal seguente post su StackOverflow: Reusable generic base class DAOs with Android Room. In questo post ricosinderiamo la risposta originaria e proveremo a riformulare la risposta con Kripton.

L’approccio utilizzato dalla libreria Room impedisce di usare un’interfaccia base DAO per definire le operazioni di SELECT, può essere usato per definire le operazioni diINSERT/UPDATE/DELETE.

Il motivo è che Room consente di definire le operazioni di SELECT soltanto definendo il codice SQL associato.

Nella domanda originaria, il modello che lo sviluppatore voleva implementare era:

Con Kripton la vita è più semplice.

Domanda: c’è un modo di usare un’interfaccia generica per definire i metodi in comune a tutte le interfacce DAO definite in Kripton?

Prendiamo il modello definito nella domanda originaria e convertiamolo mediante Kripton:

E le interfacce DAO derivate:

Kripton consente di definire le queri in due modi: in modo esplicito, definendo tutto il codice associato alle query (mediante l’attributo jql delle annotazioni @BindSqlSelect, @BindSqlInsert, @BindSqlUpdate e @BindSqlDelete) o in compact mode, con il quale è necessario definire solo le parti veramente necessarie del codice SQL. Data una particolare interfaccia DAO, Kripton conosce a quale POJO tale interfaccia è associata. Per le query più semplici, quelle che coinvolgono solo la tabella di competenza del DAO, non serve speficare da quale tabella estrarre i dati. Per un’operazione di SELECT, ad esempio, basterà specificare le condizioni di WHERE!!

Questo fatto consente di definire, per le interfacce DAO di un data source Kripton un’interfaccia DAO di base in grado di contenere le operazioni di SELECT, UPDATE, DELETE, DELETE definite in compact mode.

Per qualunque domanda su Kripton, non esitate a commentare questo post.

Per informazioni su come definire i metodi SQL con Kripton si rimanda a questo post e questa mini-guida su Kripton ORM.

Per maggiori informazioni su Kripton Persistence Library:

Happy coding!

Francesco

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close