Как я могу использовать Hibernate с MS Access? - PullRequest
17 голосов
/ 17 ноября 2009

Я хочу использовать спящий режим с MS Access. Какой диалект я должен использовать, и можете ли вы дать мне пример файла конфигурации гибернации с MS Access?

Ответы [ 5 ]

14 голосов
/ 16 апреля 2014

Актуальное решение здесь!

Потратив 1 день, пробуя разные решения ODBC, HXTT и т. Д., Я нашел эту красоту :) http://ucanaccess.sourceforge.net/site.html.

Это не может быть проще: просто добавьте баночки с сайта в библиотеки проекта и.

META-INF / persistence.xml

<?xml version="1.0" encoding="utf-8"?>
<persistence>
    <persistence-unit name="traderMandate">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
            <property name="hibernate.connection.url" value="jdbc:ucanaccess://C:/MY.accdb;" />
            <property name="hibernate.connection.driver_class" value="net.ucanaccess.jdbc.UcanaccessDriver"/>
            <property name="hibernate.archive.autodetection" value="class" />
        </properties>
    </persistence-unit>
</persistence>          

Конфигурация пружины:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="traderMandate"/>
</bean>

<tx:annotation-driven/>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

И ты в порядке. ;)

13 голосов
/ 17 ноября 2009

Для MS Access вам понадобится диалект от HXTT . Вам нужно будет использовать пакет поддержки hibernate , предоставляемый HXTT. Существует также пример проекта , который можно проверить на полностью рабочий пример.

Ниже приведен пример минимальной конфигурации:

# Hxtt Access dialect sample
hibernate.dialect=com.hxtt.support.hibernate.HxttAccessDialect
hibernate.connection.driver_class=com.hxtt.sql.access.AccessDriver
hibernate.connection.url=jdbc:access:///c:/yourAccessDirectory

PS: Если MS Access не является письменным требованием, возможно, вам следует подумать об использовании чего-то еще, например ... ну, ничего.

1 голос
/ 09 февраля 2016

Как поздняя заметка (комментирование для меня недоступно): UCanAccess, безусловно, работает, хотя у меня (пока) нет опыта написания данных. В любом случае, что касается использования диалекта, я бегу с

            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

потому что UCanAccess использует HSQLDB, и я полагаю, что диалект является лучшим соответствием. На этом рисунке нет никакого sql, на самом деле попадающего в ms-access, jackcess читает и записывает напрямую в mdb-файл access, нет кода Microsoft, интерпретирующего любой sql где-либо, насколько я понимаю, и поэтому использование SQLServerDialect только запутайте код HSQLDB, пытаясь это понять.

1 голос
/ 23 мая 2012

Вы можете использовать другую стратегию и бесплатную стратегию для решения этой проблемы (HXTT не является бесплатным):

http://www.programmingforfuture.com/2011/06/how-to-use-ms-access-with-hibernate.html

Лично у меня возникла исключительная ситуация, когда я пытаюсь выполнить обратный инжиниринг базы данных ms (org.hibernate.exception.GenericJDBCException: ошибка при чтении метаданных первичного ключа), но это работает для многих людей.

0 голосов
/ 03 июня 2010

@ Firstthumb. Извините, на самом деле это не ответ, а просто комментарий. Я был в одной лодке - рассматривал возможность использования MS Access для разработки местного соревнования по чаевым для чемпионата мира по футболу 2010 года. Я мог получить прямой доступ к MS Access с помощью Oledb, но в качестве учебного упражнения, чтобы убить кучу разработчиков Java, переходящих на .NET Я хотел показать использование nHibernate в качестве слоя DAO.

После изучения отсутствия надежного и поддерживаемого диалекта от команды JBoss / Hibernate и других соображений я решил отказаться от упражнения по использованию MSAccess. Я скачал бесплатный SQL Express 2008 вместо этого.

Для тех, кто все еще хочет использовать MSAccess в .NET, см. эту ссылку )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...