Документ EclipseLink не объясняет «сессию» - PullRequest
5 голосов
/ 24 июня 2010

Я пытаюсь выполнить запрос, используя EclipseLink, следуя дрянной документации по http://wiki.eclipse.org/Introduction_to_EclipseLink_Expressions_%28ELUG%29,, но каждый раз, когда вам нужно выполнить выражение, он использует переменную с именем "session", но ни где не объясняет, где это " переменная сессии происходит из. У меня уже есть файл persistence.xml, и я могу запустить javax.persistence.Query для своей базы данных, поэтому я знаю, что соединение работает, но я не могу понять, откуда происходит «сеанс». Небольшая помощь, пожалуйста?

Дополнительный вопрос: я ужасно пытался заставить EclipseLink работать, хотя все говорят, насколько он хорош по сравнению с Hibernate. Стоит ли EclipseLink моего времени и разочарования, или я должен просто отказаться от него и попробовать что-то вроде Hibernate?

Спасибо

Ответы [ 4 ]

4 голосов
/ 24 июня 2010

EclipseLink родился от пожертвования Oracle Toplink Eclipse Foundation, который, как и Hibernate, является проприетарным проприетарным постоянным API и предшествует JPA. Таким образом, как и Hibernate, он опирается на собственный движок и собственные концепции или абстракции. Сессия EclipseLink является одной из них (и отличается от сессии Hibernate, которая более сопоставима с EclipseLink UnitOfWork).

Вот где приходит JPA. JPA предоставляет унифицированный и стандартизированный API, который реализуют такие продукты, как EclipseLink или Hibernate. Это не означает, что они удалили проприетарные функции, и, если вы не возражаете против переносимости, вы можете использовать их. Размещенная ссылка о выражениях является примером.

Теперь, если вы хотите использовать и изучать JPA, вам следует придерживаться JPA (и это был бы мой совет). Если вы хотите использовать проприетарные функции, вам нужно узнать кое-что о базовом механизме персистентности.

Что касается документации EclipseLink, я не могу сказать, что мне это нравится, даже если мне удастся найти свой путь, может быть, потому что у меня уже есть некоторый опыт работы с JPA. Но это субъективно, я думаю, и другие люди могут иметь другое мнение (я не согласен, но, как я уже сказал, это субъективно).

Однако Hibernate, несомненно, более популярен и имеет более широкое сообщество, больше учебных пособий и т. Д., И я нахожу их документацию очень хорошей. Я не знаю, на чем вы основали свой выбор, но с точки зрения поддержки сообщества Hibernate определенно выигрывает. Просто имейте в виду, что это не значит, что вы не столкнетесь с разочарованием и в Hibernate:)

4 голосов
/ 24 июня 2010

Я предлагаю прочитать this .

В EclipseLink существуют различные виды сеансов.Не вдаваясь в детали, можно сказать, что сессия - это что-то вроде транзакции.В EclipseLink сеанс часто является Единицей Работы, которая знает, какие объекты были изменены / добавлены / удалены или что-либо еще.

Вы можете получить такой сеанс в EclipseLink, когда вызываете следующий собственный API на вашем JPAEntityManager:

//EntityManagerImpl has to be imported as org.eclipse.persistence.internal.jpa.EntityManagerImpl
Session session = ((EntityManagerImpl) entityManager).getActiveSession();

Прежде чем вызывать это, вы должны быть уверены, что находитесь внутри транзакции.

2 голосов
/ 05 июля 2010

Большая часть оригинальной документации по вики EclipseLink предшествует нашей реализации JPA.Мы находимся в процессе обновления его до гораздо более удобного набора вики-страниц, посвященных JPA.Большинство операций, в которых нуждаются пользователи, можно выполнять с помощью JPA, а с нашей реализацией JPA 2.0 возникает еще меньше потребностей в использовании собственных сеансов.

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

Хотя я наслаждаюсь интерфейсом stackoverflow, Форум EclipseLink предлагает наиболее активную поддержку от коммиттеров проекта.

Дуг

1 голос
/ 24 июня 2010

Стоит ли EclipseLink моего времени и разочарования, или я должен просто отказаться от него и попробовать что-то вроде Hibernate?

Вам решать, стоит ли это "того""для вас.

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

...