Je dois créer une API pour une application (disons un gestionnaire de bibliothèque). Comme beaucoup d'applications typiques, elle est faite au-dessus d'un outil ORM qui fait que les POJOs sont persistés dans les dbms. Je dois maintenant créer une API pour que d'autres développeurs puissent l'utiliser comme un JAR. Disons que nous voulons que les utilisateurs ajoutent des livres à la bibliothèque. J'ai de nombreuses questions sur la meilleure façon de le concevoir.
1) Est-ce une bonne idée d'avoir des classes de type DAO pour les POJO ?BookManager { create(...) delete(Book book); List<Book> getAll(); ... }
2) Exposer des objets :
a) Dois-je exposer les POJO de l'application à la couche API ? Ces POJO ont une logique d'application qui ne doit pas être exposée et une autre logique que je veux exposer. Par exemple, je veux exposer book.getPages() mais pas book.deletePage(int pageNo).
b) Créer des objets dupliqués spécialement pour la couche API. Seule l'interface sera exposée.
c) Ne pas exposer les Objets du tout. L'API est utilisée en utilisant des paramètres. Par exemple
BookManager { create(String name, int price); delete(String name); List<Pair<String, Integer>> getAll(); ... }
Cela signifie un point d'accès unique au système. Si une opération doit être effectuée sur le POJO, elle sera appelée depuis BookManager. Par exemple, ClockManager.start(String clockName). Cela donne également de la flexibilité, comme le fait d'avoir des méthodes comme startAll() dans ClockManager.
3) Enfin, le BookManager doit-il contenir une méthode pour update(), ou doit-elle être présente dans le Book lui-même ? update signifie enregistrer la configuration dans la base de données. Ce qui est plus logique :
Book book = bookManager.create("API Design"); book.setPrice(); book.update();
Ou,
Book book = bookManager.create("API Design"); book.setPrice(); bookManager.update(book);
Merci d'avance,
Aman