Объекты вторичной памяти основной памяти - PullRequest
0 голосов
/ 12 июля 2009

У меня есть ситуация, когда я хочу выполнить некоторые операции с БД в приложении Java (например, в Eclipse). Я использую MySQL как RDBMS и Hibernate как поставщик ORM.

  1. Я получаю все записи, используя встроенный SQL в Java:

// Определить понятия ... и т. Д.

ResultSet result = myStmt.executeQuery ("SELECT * FROM employee");

// итератор

  1. Я получаю все записи, используя Hibernate ORM / JPQL:

// Соединения, Entity Manager .... и т. Д.

Список результатов = em.createQuery («SELECT emp FROM Employees emp»). GetResultList ();

// итератор

Я знаю, что RDMS находится во вторичной памяти (DISK). Вопрос в том, когда я получу оба результата обратно. Где на самом деле сотрудники? На вторичном (СМ) или на оперативной памяти (ММ)?

Я хочу иметь в конце две совокупности объектов для дальнейшего тестирования: одну на СМ, ​​а другую на ММ? Как это возможно?

Спасибо

Frank

1 Ответ

0 голосов
/ 13 июля 2009

Ваши Java-объекты являются реальными Java-объектами, они находятся (в вашем понимании) в ММ, по крайней мере, на некоторое время. Прелесть модели программирования Hbernate / JPA заключается в том, что хотя в MM вы можете в значительной степени относиться к объектам, как к любым другим объектам Java, вносить в них некоторые изменения и т. Д. А затем в определенное время механизм постоянства Hibernate заставляет их греться. к, СМ (диск).

Вам нужно будет ознакомиться с последствиями сеансов и транзакций, чтобы понять, когда происходят переходы между MM и SM, а также, что очень важно, что произойдет, если два пользователя захотят работать с одними и теми же данными одновременно .

Может быть, начать здесь

Также возможно создавать объекты в ММ, которые (по крайней мере, на данный момент) не связаны с какими-либо данными на диске - это «временные» объекты, а также «отключать» данные в памяти от того, что находится на диске.

Суть в том, что Hibernate / JPA действительно удаляет большую часть тяжелой работы из персистентного кодирования, но не может скрыть сложность масштабирования, так как ваши объемы данных увеличиваются, сложность вашей модели данных возрастает, а действия вашего пользователя конкурируют за данные, которые вам нужны серьезно задуматься. Hibernate позволяет вам достигать хороших результатов, но он не может думать так за вас, вы должны сделать осторожный выбор, поскольку ваша проблемная область становится более сложной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...