Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JPA: с чего начать


Автор: Forsaken 6.5.2010, 15:49
Здравствуйте
Хочу разобраться с JPA, только немного непойму: 

2) где найти описание самой аннтоции?
3) где скачать jar для SE?

Помогите пожалуйста.

Автор: powerOn 6.5.2010, 16:13
Цитата(Forsaken @  6.5.2010,  16:49 Найти цитируемый пост)
2) где найти описание самой аннтоции?

А http://www.google.ru/search?q=JPA+annotation&ie=utf-8&oe=utf-8?

Цитата(Forsaken @  6.5.2010,  16:49 Найти цитируемый пост)
3) где скачать jar для SE?

Скачай hibernate или toplink, они поддерживает спецификацию JPA.

Автор: Forsaken 6.5.2010, 16:49
powerOn 
а я вот не очень понимаю.. как она используется.. я подумал что нужно без hibernate и toplink. Я просто прохожу сериал по велосити.
А так гугл конечно помогает..

П.С.
Я вот сейчас как раз читаю Ваш пост, где Вы написали:
Цитата

Не трудно заметить, что работа с JPA весьма похожа на работу с Hibernate.

Это как-то противопоставляет JPA хибернейту...
Простите, если что не так.. я не очень понимаю как это устроенно... полная каша в голове..

Автор: Vasay 6.5.2010, 17:53
Forsaken, 

JPA - Java Persistence API 
API - Application Programming Interface 

т.е. это стандартный способ общения вашей программы с ORM фрэймворками, такими как Hibernate. 

В идеале, если Вы используете JPA, то Вам все равно, что за ORM фрэймворк будет использоваться (поменять один на другой - одна строчка в конфигурационном файле). Но на практике могут быть проблемы.


Если я не ошибаюсь, то первый JPA делался с оглядкой на Oracle TopLink essentials,  разработчикам Hibernate уже пришлось под JPA подстраиваться.
JPA 2.0 делался с оглядкой на EclipseLink ( переименованный TopLink essentials, после передачи его исходных кодов в фонд Eclipse ).

Работа с конкретным фрэймворком напрямую, например, тем же Hibernate, дает Вам больше возможностей, так как часть "фишек" может просто не покрываться JPA, однако осложняет смену одного ORM фреймворка на другой (насколько может быть оправдана эта смена - решать Вам)

Автор: Vasay 6.5.2010, 18:13
По документации, мне очень помогает -  аннотации с описаниями и примерами:

http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html

Автор: Forsaken 6.5.2010, 19:35
Vasay
Спасибо за помощь!
Только все таки в примерах я нахожу классы из пакета javax.persistence, например в книге Java Persistence with Hibernate есть использование классов из пакета  javax.persistence (javax.persistence.Persistence) и т.д. А где их взять для SE и нужны ли они вообще?
Хотелось бы как можно универсальнее сделать, так чтобы можно было без больших передолов использовать вместо Hibernate использовать TopLink.

Автор: Vasay 6.5.2010, 20:42
Цитата

Только все таки в примерах я нахожу классы из пакета javax.persistence, например в книге Java Persistence with Hibernate есть использование классов из пакета  javax.persistence (javax.persistence.Persistence) и т.д. А где их взять для SE и нужны ли они вообще?


javax.persistence.*  в случае с toplink essentials лежат в 

toplink-essentials.jar

Для работы с JPA с использованием toplink essentials  в Java SE приложениях Вам потребуется этот jar  и toplink-essentials-agent.jar . 


П.с. Наверно, EclipseLink будет актуальне TopLink Essentials, так что лучше испотзовать его или Hibernate. 

Автор: Forsaken 6.5.2010, 21:01
Vasay
Спасибо!
Я скачал Hibernate (hibernate-distribution-3.5.1-Final) и библиотеки которые ему нужны, но так и не нашел javax.persistence.* :(

Автор: Forsaken 8.5.2010, 08:57
Нашел где находится пакет  javax.persistence: HIBERNATE_DIR\lib\jpa\hibernate-jpa-2.0-api-1.0.0.Final.jar

Теперь у меня проблема с самим проектом... Выдает все время ошибку
Код

log4j:WARN No appenders could be found for logger (ru.firstproject.FirstProject).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FirstProject
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
    at ru.firstproject.FirstProject.init(FirstProject.java:47)
    at ru.firstproject.test.TestFirstProject.main(TestFirstProject.java:13)



Помогите пожалуйста, справиться с этой проблемой. 
Сам проект (Eclipse IDE) я прикрепил к посту, он маленький (прохожу сериал  "JSP — с чего начать?"), основная часть рассположена в FirstProject.java, а TestFirstProject.java служит для тестового запуска.

Автор: Vasay 8.5.2010, 10:45
Forsaken, 

навскидку - hibernate.cfg.xml - лежит не там, где ты его ищешь.

Автор: Forsaken 8.5.2010, 11:15
Vasay
ой.. я забыл его удалть.. он ненужен... я все настройки вынес в persistence.xml чтобы упростить задачу.
Похоже что не получается как раз найти persistence.xml -хотя что я сним уже не делал.. (в CLASSPATH тоже добавил C:\FirstProject\META-INF - хотя как я понимаю можно было этого не делать), ничего непомогает

Автор: Vasay 8.5.2010, 11:22
Forsaken, 

Цитата


ой.. я забыл его удалть.. он ненужен... я все настройки вынес в persistence.xml чтобы упростить задачу.
Похоже что не получается как раз найти persistence.xml -хотя что я сним уже не делал.. (в CLASSPATH тоже добавил C:\FirstProject\META-INF - хотя как я понимаю можно было этого не делать), ничего непомогает



Но у тебя в persistence.xml явная ссылка на hibernate.cfg.xml 

Автор: Forsaken 8.5.2010, 11:30
Vasay
Эх... это я ошибся.. простите пожалуйста..
Вот тут без hibernate.cfg.xml 


Я сейчас еще раз перезалил, исправил строчку 
Код

<persistence-unit name="Infinity" transaction-type="RESOURCE_LOCAL">

на 
Код

<persistence-unit name="FirstProject" transaction-type="RESOURCE_LOCAL"> 

Автор: Vasay 8.5.2010, 11:35
Цитата

<persistence-unit name="Infinite" transaction-type="RESOURCE_LOCAL">


Цитата

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FirstProject


Ищем FirstProject, а в конфиге "Infinite"

Автор: Forsaken 8.5.2010, 11:40
Vasay
Поправил, тоже не помогает..( То есть все также. 
Я уже в отчаянии...

Автор: Vasay 8.5.2010, 11:48
Forsaken, 

а после того как поправил - какая ошибка?


п.с. NetBeans есть? Там есть мастер для создания конфиг файлов JPA и Entity классов из БД (может и в Eclipse есть - я плохо знаком с этой IDE)

Автор: Forsaken 8.5.2010, 12:12
Vasay
Ошибка вообще не меняется, все одно и тоже:
Код

log4j:WARN No appenders could be found for logger (ru.firstproject.FirstProject).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FirstProject
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
    at ru.firstproject.FirstProject.init(FirstProject.java:46)
    at ru.firstproject.test.TestFirstProject.main(TestFirstProject.java:12)

NetBeans нету, могу скачать... но я честно сказать с Эклипсом только начал работать..

п.с.
То что удалось нагуглить... все гороврят что нужно добавить в CLASSPATH папку META-INF и библиотеку.. Однако у меня это без результатно...

Может быть есть у кого минимальный работающий проект JPA + Hibernate на эклипсе. Нужна только инициализация и создание EntityManager.. Мне бы хоть соскочить с этой мертвой точки... чувствую что уже сам я не смогу...

Автор: Forsaken 8.5.2010, 12:36
Я уже скачал NetBeans, сейчас попробую что выйдет...

Автор: Forsaken 8.5.2010, 14:12
Vasay
Спасибо за помощь!
Я понял в чем была моя ошибка, мне об этом подсказал NetBeans (очень неплохая штука.. аннотации умеет подсказывать, SQL стандарты знает и подобного мастера в эклипсе я ненашел.. может быть он как плагин бывает).
В эклипсе нужно было создавать папку внутри src и выбрать типа создаваемой папки не Source Folder, а просто Folder. Может быть еще где-то была лажа, но пока ненайду...
Большое спасибо за то что не оставили меня)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)