Ржевский Дмитрий Rzhevskiy Dmitry
JDO (rus)
В проеках в которых я учавствовал, я использовал Hibernate, Ibatis, или напрямую JDBC. Но в последнее время часто слышал что хотят применять Объектно-Ориентированные Базы Данных (в частности CACH?) в высоконагруженных проектах. Скорость выполнения некоторых запросов в десятки раз больше чем при использовании реляционной БД. Но у CACH? ндостаток -использование проприетарного API – Jalape?o ( com.jalapeno.annotations.*).
Другой вариант – использование открытого стандарта JDO и вместе с ней OO Базы Данных Versant, которая поддерживает JDO.
Чем ещё удобно использование JDO – это тем что полученное приложение можно запустить как на РСУБД так и на ООСУБД. При это следует учесть обстоятельство что полномасштабные ООСУБД стоят довольно дорого.
Учитывая эти данные я
решил использовать в новом проекте JDO.
В качестве реализации я решил использовать
бесплатный DataNucleus.
Шаги:
Добавоение зависимостей:
................
102 <dependency>
103 <groupId>org.datanucleus</groupId>
104 <artifactId>datanucleus-rdbms</artifactId>
105 <version>1.0.3</version>
106 </dependency>
107 <dependency>
108 <groupId>org.datanucleus</groupId>
109 <artifactId>datanucleus-java5</artifactId>
110 <version>1.0.1</version>
111 </dependency>
112
..................
Установка maven плагина: на стадии компиляции будет модифицирроваться байт код.
...........
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>1.0.2</version>
<configuration>
<log4jConfiguration>log4j.properties</log4jConfiguration>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
..................
добавление metadata файла package.jdo. Даже если используются JDO аннотации пописать классы в package.jdo - обязательно!
интеграция со Spring
Что мне понравилось:
Не нужно в модельных объектах писть ID. Действительно – они только засоряют бизнес описание предметной области.
В запросах JDO (JDOQL) можно задать range – очень нужна для вывода даннх постранично.
В Hibernate(HQL) такое сделать нельзя – эти параметры нужно выставлять параметры из java кода.
Что не понравилось:
В возвращаемых запросам коллециях не реализован простой метод subList !
Придётся реализовывать и им коммитить..
для jdo в интернете нашёл ООСУБД пожддерживающую JDO http://www.orientechnologies.com .Попробую её использовать на продакшене.
Posted at 06:12PM янв 13, 2009 by Дима in Java | Комментарии[2]


Дмитрий я сейчас столкнулся с JDO и вылез exception может ты знаешь?
Caused by: org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The class "The class "Cite" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found." is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data for the class is not found. NestedThrowables: org.datanucleus.exceptions.ClassNotPersistableException: The class "Cite" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found.
опубликовал Ivan Август 28, 2009 at 02:41 PM MSD #
Как сказано в сообщении классы "hasnt been enhanced":
После того как класс скомпилировал его нужно обработать "посткомпилятором JDO" http://www.datanucleus.org/products/accessplatform_1_1/enhancer.html
опубликовал Дима Сентябрь 01, 2009 at 05:49 AM MSD #