我如何使用MS Access的hibernate?
我想用MS Access的hibernate。 我应该使用哪种方言,并且可以给我一个带MS Access的示例hibernateconfiguration文件?
对于MS Access,您需要HXTT的方言。 您需要使用HXTT提供的hibernate支持包 。 还有一个示例项目 ,您可以检查一个完整的工作示例。
下面是一个示例最小configuration:
# 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不是书面的要求,也许你应该考虑使用其他的东西,比如……好吧,任何东西。
实际的解决scheme
花了1天试用不同的解决schemeODBC,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>
弹簧configuration:
<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>
你很好走。 ;)
@Firstthumb。 对不起,这不是一个真正的答案,只是expression了一个评论。 我在同一条船上 – 考虑使用MS Access来为2010年世界杯足球赛制定一个本地小费赛事。我可以直接使用Oledb来访问MS Access,但是作为一个训练练习来重振一群Java开发人员转移到.NET,我想显示nHibernate作为DAO层的用法。
在调查了JBoss / Hibernate团队中一个强大且支持的方言的不可用性之后,我决定放弃使用MSAccess的练习。 我下载了免费的SQL Express 2008。
对于那些仍然想在.NET中使用MSAccess的人,请看这个链接 )
您可以使用其他策略和免费策略来解决此问题(HXTT不是免费的):
http://www.programmingforfuture.com/2011/06/how-to-use-ms-access-with-hibernate.html
Personaly当我尝试逆向工程ms数据库(org.hibernate.exception.GenericJDBCException:读取主键元数据时发生错误)时,我得到了一个exception,但它适用于很多人。
作为最后的注释(评论不适用于我):UCanAccess肯定有效,尽pipe我还没有写数据的经验。 无论如何,关于方言使用,我跑
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
因为UCanAccess使用HSQLDB,我想方言是最好的搭配。 这里没有任何sql实际打ms访问,jackcess直接读写访问mdb-file,没有微软的代码解释任何sql在任何地方,据我所知,因此使用SQLServerDialect将会只会混淆HSQLDB代码试图了解它。