我想在MS Access中使用Hibernate。我应该使用哪种方言,并且你能否给我提供一个带有MS Access的Hibernate配置文件示例?
我想在MS Access中使用Hibernate。我应该使用哪种方言,并且你能否给我提供一个带有MS Access的Hibernate配置文件示例?
实际解决方案在这里!
尝试了不同的解决方案(ODBC,HXTT等)一天后,我找到了这个美妙的东西 :) http://ucanaccess.sourceforge.net/site.html。
它再简单不过了:只需将网站上的JAR添加到您的项目库中即可。
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>
然后你就可以开始了。 ;)
对于MS Access,您需要使用来自HXTT的方言。您需要使用由HXTT提供的Hibernate支持包。还有一个示例项目,您可以查看完整的工作示例。
下面是一个最小配置的示例:
# 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
注:如果 MS Access 不是必需的,也许你应该考虑使用其他东西,比如......任何其他东西。
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
您可以使用另一种策略和免费策略来解决此问题(HXTT 不是免费的):
http://www.programmingforfuture.com/2011/06/how-to-use-ms-access-with-hibernate.html
个人经验是,在尝试反向工程 MS 数据库时,我遇到了一个异常(org.hibernate.exception.GenericJDBCException: Error while reading primary key meta data),但对许多人来说它是有效的。
@Firstthumb。抱歉,这不是一个真正的答案,只是表达了一下评论。我曾经也面临同样的问题——考虑使用MS Access开发一个本地的2010年世界杯足球比赛竞猜。我可以直接使用Oledb访问MS Access,但作为一个培训练习,我想向一群转向.NET的Java开发人员展示nHibernate作为DAO层的用法。
在调查JBoss/Hibernate团队和其他方面的可靠和支持方言的不可用性后,我决定放弃使用MSAccess的练习。我下载了免费的SQL Express 2008。
对于那些仍然想在.NET中使用MSAccess的人,请参见this link)