如何在MS Access中使用hibernate?

时间:2009-11-17 15:02:22

标签: java database hibernate ms-access orm

我想在MS Access中使用hibernate。我应该使用哪种方言,你能给我一个带MS Access的示例hibernate配置文件吗?

5 个答案:

答案 0 :(得分:13)

对于MS Access,您需要HXTT中的方言。您需要使用HXTT提供的hibernate support package。还有一个sample project,你可以检查一个完整的例子。

下面是一个最小配置示例:

# 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 :(得分:13)

此处的实际解决方案!

在花了一天时间尝试不同的解决方案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>          

Spring配置:

<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>

你很高兴去。 ;)

答案 2 :(得分:1)

您可以使用其他策略和免费策略来解决此问题(HXTT不是免费的):

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

Personaly我尝试对ms数据库进行逆向工程时遇到异常(org.hibernate.exception.GenericJDBCException:读取主键元数据时出错),但它适用于很多人。

答案 3 :(得分:1)

作为一个迟到的注释(评论不适合我):UCanAccess肯定有效,虽然我还没有(还)有写数据的经验。无论如何,关于使用的方言,我用

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

因为UCanAccess使用HSQLDB,我认为方言是最佳匹配。这里没有任何sql实际点击ms-access,jackcess直接读取和写入访问mdb文件,根据我的理解,没有微软代码在任何地方解释任何sql,因此使用SQLServerDialect只会混淆尝试理解它的HSQLDB代码。

答案 4 :(得分:0)

@Firstthumb。对不起,这不是一个真正的答案,只是表达评论。我在同一条船上 - 考虑使用MS Access为2010年足球世界杯开发本地小费比赛。我可以使用Oledb直接访问MS Access,但作为一项训练练习,重新安排一群Java开发人员转向.NET,我想展示nHibernate作为DAO层的用法。

在调查了JBoss / Hibernate团队无法获得强大且支持的方言以及其他考虑因素后,我决定放弃使用MSAccess的练习。我下载了免费的SQL Express 2008。

对于那些仍想在.NET中使用MSAccess的用户,请参阅this link