Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517

JPA: настроить EntityManagerFactory на хибернейтовский EntityManager

11.04.2013, 15:50. Показов 5453. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я пытаюсь использовать комбинацию spring + jpa + hibernate(как поставщик em для jpa). Но не могу сконфигурировать EntityManager в spring-config, остальное всё вроде как сконфигурировал, но привожу и код тех файлов на всякий случай.

Конфигурация jpa (persistence.xml):
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="NewPersistenceUnit">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:sybase:Tds:127.0.0.1:8000/mydb"/>
            <property name="hibernate.connection.driver_class" value="com.sybase.jdbc3.jdbc.SybDriver"/>
            <property name="hibernate.connection.username" value="sa"/>
            <property name="hibernate.connection.password" value=""/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
Конфигурация hibernate (hibernate.cfg.xml):
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
 
        <mapping class="com.dw.entity.ContactInfo"/>
 
    </session-factory>
</hibernate-configuration>
Конфигурация sptirng (spring-config.xml):
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans [url]http://www.springframework.org/schema/beans/spring-beans-2.5.xsd[/url]
                        [url]http://www.springframework.org/schema/context[/url] [url]http://www.springframework.org/schema/context/spring-context-2.5.xsd[/url]
                        [url]http://www.springframework.org/schema/tx[/url] [url]http://www.springframework.org/schema/tx/spring-tx-2.5.xsd[/url]
                        [url]http://www.springframework.org/schema/aop[/url] http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
 
    <context:annotation-config />
 
    <tx:annotation-driven transaction-manager="transactionManager" />
 
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <!--<property name="dataSource" value="NewPersistenceUnit" />   НЕ ЗНАЮ КАК УСТАНОВИТЬ ПРАВИЛЬНО--> 
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="packagesToScan" value="com.dw.entity"/>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop>
                <prop key="hibernate.max_fetch_depth">3</prop>
                <prop key="hibernate.jdbc.fetch_size">50</prop>
                <prop key="hibernate.jdbc.batch_size">10</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
 
 
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf"/>
    </bean>
 
    <context:component-scan base-package="com.dw.impl" />
 
</beans>
Как видно, при конфигурации бина <bean id="emf" я убрал строку по конфигурации dataSource так как не знаю как здесь поступить, оно хочет там какое-то jdbc, но где же я ему его возьму когда у меня таблица будет через hibernate взаимодействовать-то. Как ему указать что source с каким будет оно работать это и есть hibernate.
Ну или может я чего не так делаю (я пытаюсь сконфигурировать всё так чтобы jpa entity manager брался за hibernate реализацию для работы с базой).

Добавлено через 25 минут
В примере что у меня есть dataSource при конфигруировании ссылается на это:
XML
1
2
3
4
    <jdbc:embedded-database id="dataSource" type="H2">
        <jdbc:script location="classpath:schema.sql"/>
        <jdbc:script location="classpath:test-data.sql"/>    
    </jdbc:embedded-database>
Но там же база была в виде файлов, а на что мне тогда ссылаться когда у меня только поставщик jpa - hibernate есть

Добавлено через 21 минуту
Оставил так (не указывая свойство dataSource), тогда при попытке использовать entityManager получаю эксепшен:
Code
1
Could not open JPA EntityManager for transaction; nested exception is java.lang.UnsupportedOperationException: The application must supply JDBC connections
Добавлено через 19 минут
Прописал следующий dataSource:
XML
1
2
3
4
5
6
7
8
9
10
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDriver"/>
        <property name="url" value="jdbc:sybase:Tds:127.0.0.1:8000/mydb"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
        <property name="maxActive" value="100"/>
        <property name="maxIdle" value="30"/>
        <property name="maxWait" value="16000"/>
        <property name="minIdle" value="0"/>
    </bean>
Теперь работает, но в чём фишка то : у меня и в спринг-конфиг прописана инфа о конекте к базе и в persistence прописан конфиг для его работы, в чём же смысл?

Добавлено через 14 часов 0 минут
Сделал так:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<bean id="persistenceUnitManager"
          class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="persistenceXmlLocations" value="classpath:META-INF/persistence.xml" />
    </bean>
 
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitManager" ref="persistenceUnitManager" />
       <!--<property name="dataSource" ref="dataSource" />-->
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="packagesToScan" value="com.dw.entity"/>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop>
                <prop key="hibernate.max_fetch_depth">3</prop>
                <prop key="hibernate.jdbc.fetch_size">50</prop>
                <prop key="hibernate.jdbc.batch_size">10</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
Вроде теперь всё ок, хотя и не уверен до конца что всё правильно сконфигурировал я .
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2013, 15:50
Ответы с готовыми решениями:

Hibernate : EntityManager и EntityManagerFactory (есть ли стандартные реализации ?)
В сгенерированном коде у меня всё завязано на EntityManager, который сразу видно рассчитывает на внедрение со спрингом ... но это допустим...

JPA EntityManager.persist : получить id добавленной записи
У меня в jpa проекте (поставщик hibernate) есть некая сущность в которой id установлено автоматически генерируемым @Id ...

JDBC, JPA, EntityManagerFactory в Java 1.8 и 1.6
Имеется проект по примеру https://habr.com/post/240033/ Только база данных postgreSQL Проект нормально работает если в pom.xml ..... ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2013, 15:50
Помогаю со студенческими работами здесь

Ошибка создания entityManagerFactory в spring_boot
Всем привет! Ребят, может подскажет кто в чем проблема по данной ошибке? Я не понимаю что он хочет и куда нужно смотреть ...

Attempting to execute an operation on a closed EntityManagerFactory
Создаю dataTable: &lt;h:dataTable value=&quot;#{friend.list}&quot; var=&quot;f2&quot;&gt; &lt;h:column&gt; &lt;f:facet...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru