Когда использовать Hibernate/JPA/Toplink?

Вам нужно увеличить размер памяти в Jdeveloper, перейдите в setDomainEnv.cmd.

set WLS_HOME=%WL_HOME%\server    
set XMS_SUN_64BIT=**256**
set XMS_SUN_32BIT=**256**
set XMX_SUN_64BIT=**3072**
set XMX_SUN_32BIT=**3072**
set XMS_JROCKIT_64BIT=**256**
set XMS_JROCKIT_32BIT=**256**
set XMX_JROCKIT_64BIT=**1024**
set XMX_JROCKIT_32BIT=**1024**

if "%JAVA_VENDOR%"=="Sun" (
    set WLS_MEM_ARGS_64BIT=**-Xms256m -Xmx512m**
    set WLS_MEM_ARGS_32BIT=**-Xms256m -Xmx512m**
) else (
    set WLS_MEM_ARGS_64BIT=**-Xms512m -Xmx512m**
    set WLS_MEM_ARGS_32BIT=**-Xms512m -Xmx512m**
)

и

set MEM_PERM_SIZE_64BIT=-XX:PermSize=**256m**
set MEM_PERM_SIZE_32BIT=-XX:PermSize=**256m**

if "%JAVA_USE_64BIT%"=="true" (
    set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%
) else (
    set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%
)

set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=**1024m**
set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=**1024m**
7
задан GBa 23 September 2008 в 19:22
поделиться

5 ответов

Короткий ответ: Это зависит от сложности, которую Вы хотите поддерживать.

Длинный ответ:

В первую очередь, ORM (возражают реляционному отображению - база данных, отображающаяся, как Вы называете его-) и JNDI (Именование Java и Интерфейсы Каталога) являются двумя разными вещами.

Первое как Вы уже знаете, используется для отображения Таблиц базы данных на классы и объекты. Второе должно обеспечить механизм поиска для ресурсов, они могут быть DataSources, Ejb, Очередями или другими.

Возможно, Ваш средний "JDBC".

Теперь что касается Вашего вопроса: Если бы это настолько просто, может быть это, не было бы необходимо реализовать ORM. Таблицы числа были бы приблизительно 5 - 10 самое большее, и действительно простые операции, я предполагаю.

Вероятно, использование простого JDBC было бы достаточно.

При использовании шаблона ДАО, можно изменить его позже для поддержки стратегии ORM в случае необходимости.

Как это: Скажите, что у Вас есть Список сотрудников

Вы создаете Employee.java со всеми полями DB вручную (он не должен занимать слишком много времени), и EmployeeDaO.java с методами как:

+findById( id ): Employee
+insert( Employee ) 
+update( Employee )
+delete( Employee ) 
+findAll():List<Employee>

И реализация является довольно прямой:

select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc 

Когда (и Если) Ваше приложение становится слишком сложным, можно изменить реализацию ДАО. Например, в "избранном" методе Вы изменяете код для использования объекта ORM, который выполняет операцию.

public Employee selectById( int id ) {
      // Commenting out the previous implementation...
      // String query = select * from employee where id = ? 
      // execute( query )  

      // Using the ORM solution

       Session session = getSession();
       Employee e = ( Employee ) session.get( Employee.clas, id );
       return e;
}

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

Конечно, если Вы хотите изучить технологию, можно запустить прямо далеко даже с 1 таблицы.

Выбор одного или другой (решение ORM, которое является) зависит в основном от технологии, которую Вы используете. Например, для JBoss или других продуктов с открытым исходным кодом В спящем режиме, является большим. Это - открытый исходный код, существует много ресурсов, где извлечь уроки из. Но если Вы используете что-то, что уже имеет Toplink (как сервер приложений оракула) или если основа уже основана на Toplink, необходимо остаться с той платформой.

Между прочим, так как Oracle купила BEA, они сказали, что заменяют Kodo (weblogic peresistence платформа) с toplink в теперь названном "Сервере приложений Oracle WebLogic".

Я оставляю Вас некоторыми ресурсами, где можно получить больше информации об этом:


В этом "Шаблоны Архитектуры приложений для предприятия" книга, Martin Fowler, объясняет, где использовать один или другой, вот каталог. Смотрите на Источник данных Архитектурные Шаблоны по сравнению с Объектно-реляционными Поведенческими моделями:

Каталог PEAA


ДАО (Объект Доступа к данным) является частью базового каталога шаблонов J2EE:

Шаблон ДАО


Это - учебное руководство начинающего для, Будьте в спящем режиме:

Быть в спящем режиме


Официальная страница Toplink:

Toplink


Наконец я "думаю", что польза думает о JPA, то, что можно изменить поставщиков в последнее время.

Запустите простой и затем развейтесь.

Я надеюсь, что это помогает.

17
ответ дан 6 December 2019 в 08:46
поделиться

Действительно кажется, что это было бы излишество для очень простого приложения, особенно если у Вас нет планов подробно останавливаться на нем когда-нибудь. Однако также кажется, что могло стоить использовать тех, которые имеют это простое приложение так, чтобы у Вас было лучшее понимание того, как они работают в следующий раз, когда у Вас есть что-то, что могло использовать их.

1
ответ дан 6 December 2019 в 08:46
поделиться

Вы имеете в виду простой JDBC? Маленький проект мог бы быть хорошей возможностью взять одну из платформ ORM, особенно если у Вас есть время.

Без большей информации трудно предоставить рекомендацию так или иначе как бы то ни было.

1
ответ дан 6 December 2019 в 08:46
поделиться

Лучший способ изучить ORM находится на маленьком проекте. Запустите на этом проекте.

После того как Вы приобретаете навык его, Вы будете использовать ORM для всего.

Нет ничего слишком маленького для ORM. После Ваших первых двух проектов Вы найдете, что не можете работать никакой другой путь. ORM, отображающийся обычно, имеет больше смысла, чем почти какой-либо другой способ работать.

1
ответ дан 6 December 2019 в 08:46
поделиться

Мое эмпирическое правило - то, если это только для чтения, я готов сделать это в JDBC, хотя я предпочитаю использовать пустое, в спящем режиме проект с SQLQuery для использования в своих интересах отображения типа Hibernate. После того как я должен сделать записи, я иду с, в спящем режиме, потому что настолько легче установить несколько атрибутов и затем звонить, сохраняют, чем установить каждый столбец индивидуально. И когда необходимо начать оптимизировать для предотвращения обновлений на неизменных объектах, Вы - путь, более обеспеченный с OR/M и его грязной проверкой. Контакт с отношениями внешнего ключа является другим знаком, что необходимо отобразить его однажды и затем использовать методы считывания. Та же логика относилась бы к Toplink, хотя, если они не добавили что-то как HQL за эти 3 года, так как я использовал его, Будьте в спящем режиме, было бы намного лучше для этого вида перехода от чистого SQL. Следует иметь в виду, что Вы не должны отображать каждый объект/таблицу, просто те, где существует ясное преимущество. По моему опыту, большинство проектов, которые не используют существующий OR/M, заканчивает тем, что создало новый, который является плохой идеей.

1
ответ дан 6 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: