API персистентности Java - PullRequest
6 голосов
/ 01 апреля 2010

Я новичок в Java Persistence API . Я только что изучил это и теперь хочу использовать это в своем приложении Java для настольных ПК. Но у меня есть следующие вопросы по этому поводу:

Q1. Какая реализация JPA имеет наименьший размер (поскольку я хочу, чтобы размер моего приложения был как можно меньшим)?

Q2. Как найти значение тега <provider> в файле persistence.xml. Я знаю, что его значение зависит от поставщика, но я не смог найти значение для реализации JPA, загруженное с здесь .

Ответы [ 3 ]

5 голосов
/ 01 апреля 2010

Q1. Какая реализация JPA имеет наименьший размер (поскольку я хочу, чтобы размер моего приложения был как можно меньшим)?

Для JPA 1.0:

  • Hibernate Entity Manager 3.4.0.GA: ~ 4,9 МБ
  • EclipseLink 1.1.3: ~ 4,7 МБ
  • OpenJPA 1.2.2: ~ 2,7 МБ (я не уверен в этом, пока не проверял, поэтому, возможно, мне не хватает некоторых банок)

Я бы держался подальше от TopLink Essentials.

Для JPA 2.0:

  • DataNucleus 2.0.3: ~ 3,7 МБ
  • EclipseLink 1.2 и 2.0+: ~ 4,8 МБ
  • Hibernate Entity Manager 3.5.0-Final: ~ 5,8 МБ
  • OpenJPA 2.0.0-бета3: не измерено (все еще в бета-версии)

Эти меры были предприняты для моего любимого проекта (включая зависимости, кроме драйвера JDBC). Лично я бы не основывал свой выбор только на размере, даже для настольного приложения.

Q2. Как найти значение тега в файле persistence.xml.

  • DataNucleus: org.datanucleus.jpa.PersistenceProviderImpl
  • EclipseLink: org.eclipse.persistence.jpa.PersistenceProvider
  • Спящий режим: org.hibernate.ejb.HibernatePersistence
  • OpenJPA: org.apache.openjpa.persistence.PersistenceProviderImpl
  • TopLink Essentials: oracle.toplink.essentials.PersistenceProvider
2 голосов
/ 01 апреля 2010

Q1. ОЧЕНЬ грубо подсчитано:

  • Hibernate (версии около 3.4.0.GA) с deps составляет ок. 3,6 Мб.
  • TopLink Essentials (2.0.1-04) ок. 2,4 Мб.
  • EclipseLink (напр. TopLink) (1.1.3-M1) ок. 4,7 Мб.

Q2. Откройте JAR, проверьте файл META-INF/services/javax.persistence.spi.PersistenceProvider.

0 голосов
/ 01 апреля 2010

Вы имеете в виду размер в памяти? или размер банки? Размер в памяти зависит от того, сколько классов сохраняется, метаданных для них, сколько открытых EntityManager'ов, что находится в кешах L1 / L2. Я знаю, что DataNucleus использует меньше памяти, чем Hibernate, поскольку сами пользователи сообщают об этом, не имея ничего против других первичных реализаций.

Размер банки - бессмысленная мера чего-либо, так как большинство вещей там не могут быть использованы.

PS. DataNucleus также является реализацией JPA1 + 2

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