Java Swing + Hibernate + Maven

1

Я знаю, что есть много информации, объясняющей, как использовать Swing + Hibernate и Maven в проекте, но я думаю, что вся эта информация устарела. Я просто попытался следовать этому, и у меня просто возникли проблемы с импортом, поскольку, по-видимому, новые версии Hibernate-core не имеют некоторых классов, которые были у него во время этого урока (я немного смеюсь, когда вижу код с использованием Vector (-:)

Вопрос в том, можно ли создать проект, используя последние версии Hibernate с Swing? Есть ли у кого-нибудь информация о том, как это сделать, не с 3 лет назад?

Проблемы, которые у меня были:

1 - Не удалось получить запрос HQL для работы с Netbeans... он жалуется на

<property name="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</property>

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

2 - При запуске кода он жалуется на

Caused by: java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
Which is a package from early days of hibernate.

Поблагодарите за помощь, даже указывая на хорошую документацию...

ура

ОБНОВЛЕНИЕ: Трассировка стека

--- exec-maven-plugin:1.2.1:exec (default-cli) @ SwingProject ---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Apr 01, 2014 4:48:07 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.4.Final}
Apr 01, 2014 4:48:07 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Apr 01, 2014 4:48:07 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
    at padaria.util.NewHibernateUtil.<clinit>(NewHibernateUtil.java:30)
    at br.com.vaast.main.AdminMain.executeHQLQuery(AdminMain.java:43)
    at br.com.vaast.main.AdminMain.runQueryBasedOnFirstName(AdminMain.java:34)
    at br.com.vaast.main.AdminMain.jButton1ActionPerformed(AdminMain.java:206)
    at br.com.vaast.main.AdminMain.access$200(AdminMain.java:21)
    at br.com.vaast.main.AdminMain$3.actionPerformed(AdminMain.java:120)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.hibernate.cfg.Configuration.reset(Configuration.java:353)
    at org.hibernate.cfg.AnnotationConfiguration.reset(AnnotationConfiguration.java:289)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:289)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:293)
    at org.hibernate.cfg.AnnotationConfiguration.<init>(AnnotationConfiguration.java:168)
    at padaria.util.NewHibernateUtil.<clinit>(NewHibernateUtil.java:26)
    ... 41 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 59 more
  • 0
    Добавьте свой стек ошибок
Теги:
maven
netbeans
hibernate
swing

1 ответ

2
Лучший ответ

Вещи Ive пробовали/проверяли:

Если вы загрузите проект, описанный в учебнике, а затем проверив pom.xml, вы увидите, что используемые библиотеки довольно старые. Я считаю, что проект построен с более старой версией Netbeans. Если вы проверите этот учебник: https://netbeans.org/kb/docs/java/hibernate-java-se.html, который на самом деле один и тот же, но без использования maven, упоминается, что "NetBeans IDE 7.4 и ранее в комплекте Hibernate 3 ".

Если вы попытаетесь следовать руководству, которое строит проект без использования Maven: https://netbeans.org/kb/docs/java/hibernate-java-se.html, и вы работаете с NetBeans 8.0, вы получите изображение нужны библиотеки Hibernate 4.x. Это связано с тем, что IDE по умолчанию поставляется в комплекте с библиотеками Hibernate 4.x. Возвращаясь и создав проект с Maven, на этот раз я получил следующее в моем pom.xml

<repositories>
    <repository>
        <id>unknown-jars-temp-repo</id>
        <name>A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository.</name>
        <url>file:${project.basedir}/lib</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.8.Final</version>
    </dependency>
    <dependency>
        <groupId>unknown.binary</groupId>
        <artifactId>hibernate-jpa-2.0-api-1.0.1.Final</artifactId>
        <version>SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>unknown.binary</groupId>
        <artifactId>mysql-connector-java-5.1.23-bin</artifactId>
        <version>SNAPSHOT</version>
    </dependency>
</dependencies>

Решение, которое сработало для меня.

Вышеупомянутый pom.xml дал некоторое представление, но есть некоторые части, которые сделали меня несчастным: <groupId>unknown.binary</groupId> и temporary repository.

Поэтому я начал искать и, наконец, здесь: http://hibernate.org/orm/documentation/getting-started/, и здесь я получил то, что мне было нужно: http://hibernate.org/orm/documentation/getting-started/.

Я изменил свой pom.xml на:

<dependencies>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.5.Final</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.30</version>
</dependency>

Все отлично работает с последней версией Hibernate.

ПРИМЕЧАНИЕ.

как видно из приведенных выше ссылок, у вас есть два варианта. Вы можете использовать <artifactId>hibernate-entitymanager</artifactId> или <artifactId>hibernate-core</artifactId>.

Я считаю, что эти ссылки могут дать некоторые ответы:

ЗАМЕТКА 2:
У меня были проблемы с org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory. Чтобы построить проект, мне пришлось использовать версию без внутренней. Если бы я использовал внутреннюю версию, то шаг " Creating Hibernate Mapping Files and POJOs From a Database не мог быть завершен". Я должен был вернуться к классике, чтобы завершить шаг и изменить его на внутреннее в конце.

Надеюсь, что все вышесказанное вам полезно.

  • 0
    Привет злинки! Я был очень доволен вашим ответом, похоже, вы приложили немало усилий, и я уже благодарен за это. Я попытался загрузить и собрать проект по ссылке, которая не использует maven, но я не знаю, как преобразовать этот проект в проект maven, чтобы я мог объявить библиотеки hibernate. Я использую NB 8.0, но когда я импортировал проект, он пожаловался, что не может найти некоторые библиотеки гибернации (например, HibernateException, Query и Session). Посмотрите вокруг и посмотрите, как я могу превратить этот проект в проект Maven.
  • 0
    Спасибо, мужик, все получилось ... пришлось кое-что проработать, но в целом твой пост был спасителем. У меня есть еще один вопрос, можно ли сделать все это без необходимости делать все сопоставления вручную? проект, который я хочу перенести на Swing, был проектом JSF, в котором были все необходимые аннотации, чтобы избежать всего отображения. Спасибо за вашу помощь!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню