Как работает ORM под чехлами? Также, каков наилучший способ иметь постоянные объекты в Java?

StackOverflow https://stackoverflow.com/questions/1231295

  •  22-07-2019
  •  | 
  •  

Вопрос

Как работает ORM? Сериализуются ли объекты в BLOB?

В Java, JDO все еще способ сделать это? Что еще доступно? Похоже, было много разговоров об EJB, прямой сериализации объектов и JDO.

Это было полезно?

Решение

Чтобы ответить на ваш первый вопрос, вот выдержка из Hibernate в действии , это говорит о том, что существуют различные способы реализации ORM:

  

Чистый реляционный

     

Все приложение, включая   пользовательский интерфейс, разработан вокруг   реляционная модель и на основе SQL   реляционные операции. Этот подход,   несмотря на свои недостатки для больших   системы, может быть отличным решением   для простых приложений, где низкий   Уровень повторного использования кода терпимый.   Прямой SQL может быть настроен в любой   аспект, но недостатки, такие как   отсутствие мобильности и   ремонтопригодность, значительны,   особенно в долгосрочной перспективе.   Приложения в этой категории часто   интенсивно использовать хранимые процедуры,   перекладывая часть работы из   бизнес-уровень и в базу данных.      

Сопоставление легких объектов

     

Объекты представлены в виде классов   которые сопоставлены вручную с   реляционные таблицы. Кодированный вручную SQL / JDBC   скрыто от бизнес-логики   используя известные шаблоны проектирования.   Этот подход чрезвычайно распространен   и успешно для приложений   с небольшим количеством лиц, или   приложения с общими,   управляемые метаданными модели данных. Хранится   процедуры могут иметь место в этом   вид приложения.      

Сопоставление средних объектов

     

Приложение создано вокруг   объектная модель. SQL генерируется в   время сборки с использованием генерации кода   инструмент, или во время выполнения с помощью кода платформы.   Ассоциации между объектами   поддерживается настойчивость   механизм, и запросы могут быть   указывается с использованием объектно-ориентированного   язык выражения. Объекты   кэшируется постоянным слоем.   очень много продуктов ORM и доморощенные   постоянные слои поддерживают как минимум   этот уровень функциональности. Это хорошо   подходит для приложений среднего размера   с некоторыми сложными транзакциями,   особенно когда переносимость между   различные продукты базы данных   важный. Эти приложения обычно   не используйте хранимые процедуры.      

Полное сопоставление объектов

     

Поддержка полного сопоставления объектов   сложное моделирование объектов:   состав, наследство,   полиморфизм и «настойчивость   достижимость. »Постоянный слой   реализует прозрачное постоянство;   постоянные классы не наследуют   специальный базовый класс или должен   реализовать специальный интерфейс.   Эффективные стратегии извлечения (ленивый   и жаждут извлечения) и кеширования   стратегии реализованы   прозрачно для приложения. это   уровень функциональности вряд ли можно   достигается доморощенной настойчивостью   слой - это эквивалентно месяцам или   годы разработки время. Число   коммерческой и с открытым исходным кодом Java ORM   инструменты достигли этого уровня   качественный. Этот уровень соответствует   определение ORM мы используем в этом   книга. Давайте посмотрим на проблемы, которые мы   ожидать решения с помощью инструмента, который   достигается полное сопоставление объектов.

Другие советы

ORM = реляционное сопоставление объектов, атрибуты объектов сопоставляются со столбцами в реальной базе данных. Это отображение является произвольным, так что это может быть сделано для больших двоичных объектов, на практике то, что наиболее полезно, имеет тенденцию к естественным отображениям - строки в Varchars, int в целые числа и т. Д.

JPA - это место для поиска стандарта для ORM. JPA заменяет подход EJB CMP, который оказался громоздким. JPA позволяет выражать сопоставление в виде аннотаций Java, а также позволяет указывать сопоставления в файлах конфигурации, при поддержке нескольких [le баз данных последнее может быть полезно.

JPA имеет язык запросов, так что вы можете создавать запросы к атрибутам объекта.

JPA поддерживается основными поставщиками серверов приложений, а также такими продуктами, как Hibernate.

Мне было приятно работать с JPA, особенно с EJB CMP.

Я бы по-прежнему рекомендовал использовать фасады EJB Session Beans для управления транзакциями и обеспечения их безопасности - подход, основанный на аннотациях, делает EJB 3 way более простым в использовании, чем EJB 2, с минимальными затратами на кодирование.

JDO на самом деле также является стандартным ORM и предоставляет более полную спецификацию, чем JPA (1 + 2). JPQL более сфокусирован на концепциях СУБД и поэтому имитирует SQL. JDOQL следует синтаксису Java, поэтому он больше основан на объектах. Зависит от того, считается ли ваше приложение удаленным от РСУБД. Если так, то JPA - не тот путь. Если это только для RDBMS, то JPA, безусловно, рассматривается.

Сериализация объектов в BLOB зависит от вашей конфигурации. Вы можете сделать это для сложных типов объектов, если хотите, но тогда они не будут доступны для запроса. Если вместо этого вы сохраните их в собственной форме, вы также можете запросить их, что приведет к повышению эффективности приложений.

- Энди (DataNucleus - постоянство JDO и JPA)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top