Donc dans un projet récent (un petit outil interne), je veux expérimenter avec et non en utilisant un outil ORM que nous utilisons généralement dans tous nos projets. La raison en est que je ne suis pas particulièrement fan d'eux, en particulier dans des projets complexes avec des hiérarchies d'objets et des relations complexes. À l'aide d'un ORM, il devient difficile de déboguer les problèmes de performance et d'autres problèmes découlant de beaucoup de choses que la bibliothèque ORM pourrait faire sous les couvertures pour «optimiser».Représenter des objets incomplets lors du chargement de la base de données
Donc je pensais à un moyen de charger paresseux certaines propriétés d'objets quand je n'ai pas l'aide d'un outil ORM. Supposons un exemple:
class Student {
private List<Course> courses;
public List<Course> getCourses() {...}
public void setCourses(List<Course> courses) {...}
}
Dans ce cas, nous mettons paresseusement des "cours". Donc je veux un moyen de faire la différence entre un scénario dans lequel les "cours" n'ont pas été chargés depuis la base de données et quand "cours" est en fait nul même après avoir été extrait de la base de données.
Quels sont les moyens habituels pour y parvenir? Je pensais que probablement associer un objet vide spécial de type "Course" indiquant qu'en fait aucune donnée n'existe dans la base de données. Et le java null signifierait que les données ne sont pas extraites de la base de données. Mais cela casserait un peu l'abstraction dans le sens où le getter pour de telles propriétés paresseuses doit prendre la décision d'accéder au DAO pour obtenir les données.