2009-07-12 7 views
0

Je suis dans une situation dans laquelle je souhaite effectuer des opérations liées à une base de données dans une application Java (par exemple, sur Eclipse). J'utilise MySQL en tant que RDBMS et Hibernate en tant que fournisseur ORM.Objets de mémoire secondaire de mémoire principale

  1. Je retreive tous les enregistrements à l'aide de SQL embarqué en Java:

// Définir conncections ... etc

résultat ResultSet = myStmt.executeQuery ("SELECT * FROM employés");

// iterator

  1. Je retreive tous les enregistrements à l'aide Hibernate ORM/JPQL:

// Connexions, Entity Manager .... etc

Résultat de la liste = em.createQuery ("SELECT emp FROM Employees emp"). GetResultList();

// iterator

Je sais que le SGBDR se trouve en mémoire secondaire (DISK). La question est, quand je reçois les deux résultats. Où sont réellement les employés? Sur le secondaire (SM) ou sur la mémoire principale (MM)?

Je veux avoir à la fin deux populations d'objets pour d'autres tests, l'une opérant sur le SM et l'autre sur le MM? Comment est-ce possible?

Merci

Frank

Répondre

0

Vos objets Java sont de véritables objets Java, ils sont (pour utiliser votre terme) MM, au moins pendant un certain temps. La beauté du modèle de programmation Hbernate/JPA est que, dans MM, vous pouvez traiter les objets comme s'ils étaient n'importe quel autre objet Java, y apporter quelques modifications, etc. Et à un moment donné, le mécanisme de persistance d'Hibernate les obtient à, SM (disque). Vous aurez besoin de lire sur les implications des sessions et des transactions afin de comprendre quand les transitions entre MM et SM se produisent, et aussi très important, ce qui se passe si deux utilisateurs veulent travailler avec les mêmes données en même temps. temps.

Peut-être commencer here

Il est également possible de créer des objets en MM qui sont (au moins pour l'instant) ne se rapportent pas à des données sur le disque - ce sont des objets « transitoires », et aussi aux données « separer » en memeory de ce qui est sur le disque. En résumé, Hibernate/JPA supprime beaucoup de travail fastidieux du codage de persistance, mais il ne peut masquer la complexité de l'échelle, car vos volumes de données augmentent, la complexité de votre modèle de données augmente et les actions de votre utilisateur s'affrontent pour les données que vous avez. besoin de réfléchir sérieusement. Hibernate vous permet de réaliser de bonnes choses, mais il ne peut pas faire cela en pensant à vous, vous devez faire des choix judicieux au fur et à mesure que votre domaine de problème devient plus complexe.