Объекты данных Java ( JDO ) — это спецификация сохранения объектов Java . Одной из его особенностей является прозрачность служб персистентности для модели предметной области . Постоянные объекты JDO — это обычные классы языка программирования Java ( POJO ); им не требуется реализовывать определенные интерфейсы или расширять специальные классы. JDO 1.0 был разработан в рамках процесса сообщества Java как JSR 12. JDO 2.0 был разработан под номером JSR 243 и выпущен 10 мая 2006 года. JDO 2.1 был завершен в феврале 2008 года и разработан проектом Apache JDO. JDO 2.2 был выпущен в октябре 2008 года. JDO 3.0 был выпущен в апреле 2010 года.
Сохранение объекта определяется во внешних метафайлах XML , которые могут иметь расширения, зависящие от поставщика. Поставщики JDO предоставляют разработчикам средства расширения , которые изменяют скомпилированные файлы классов Java, чтобы их можно было прозрачно сохранять. (Обратите внимание, что расширение байт-кода не требуется спецификацией JDO, хотя это обычно используемый механизм для реализации требований спецификации JDO.) В настоящее время поставщики JDO предлагают несколько вариантов сохранения, например, в RDBMS , в OODB или в файлы . .
Расширенные классы JDO переносимы между реализациями разных поставщиков. После улучшения класс Java можно использовать с продуктом JDO любого поставщика.
JDO интегрируется с Java EE несколькими способами. Прежде всего, реализация поставщика может быть предоставлена в виде соединителя JEE [ уточнить ] . Во-вторых, JDO может работать в контексте сервисов транзакций JEE .
Спецификация Enterprise JavaBeans 3.0 (EJB3) также охватывает сохранение, как и EJB v2 с Entity Beans . Между двумя организациями по стандартизации возникали конфликты по поводу превосходства. JDO имеет несколько коммерческих реализаций.
В конце концов, постоянство было «вырвано» из «EJB3 Core», и был сформирован новый стандарт — Java Persistence API (JPA). JPA использует javax.persistence
пакет и сначала был указан в отдельном документе в спецификации EJB3 JSR 220, но позже был перенесен в собственную спецификацию JSR 317. Примечательно, что для него javax.persistence
не требуется контейнер EJB, и поэтому он будет работать в среде Java SE как ну, как всегда делал JDO. JPA, однако, является стандартом объектно-реляционного отображения (ORM), тогда как JDO является одновременно стандартом объектно-реляционного отображения и стандартом прозрачного сохранения объектов. JDO, с точки зрения API, не зависит от технологии базового хранилища данных, тогда как JPA ориентирован на хранилища данных РСУБД (хотя есть несколько поставщиков JPA, которые поддерживают доступ к нереляционным хранилищам данных через API JPA, например DataNucleus и ОбъектБД).
Ведущие коммерческие реализации JDO и проекты с открытым исходным кодом также предлагают реализацию JPA API в качестве альтернативного доступа к своим базовым механизмам персистентности, которые раньше предоставлялись исключительно через JDO в исходных продуктах. Существует множество реализаций JDO с открытым исходным кодом.
Connection
отjavax.jdo.PersistenceManager