我想在MS Access中使用休眠。我应该使用哪种方言,并且可以给我一个带MS Access的示例休眠配置文件?如何在MS Access中使用休眠?
回答
对于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。如果我能,你会得到另一个实际上回答这个问题的+1。 – 2009-11-17 18:21:48
-1为PS没有任何解释为什么 - 有很多应用程序,您可能会使用Hibernate,而不适合使用像Jet/ACE这样的文件服务器数据存储。 – 2009-11-17 23:51:20
@David Hibernate对你来说不是非官方的支持吗?对我而言,我不想依赖第三方方言提供者。 – 2009-11-18 18:35:36
@Firstthumb。对不起,这不是一个真正的答案,而只是表达了一个评论。我在同一条船上 - 考虑使用MS Access为2010年世界杯足球赛制定本地小费赛事。我可以直接使用Oledb来访问MS Access,但作为一个训练练习来重振一群转向.NET的Java开发人员,我想展示nHibernate作为DAO层的用法。
在调查了JBoss/Hibernate团队中一个强大且支持的方言的不可用性和其他考虑因素后,我决定放弃使用MSAccess的练习。我下载了免费的SQL Express 2008。
对于那些谁仍然希望在.NET中使用MSACCESS,请参阅this link)
您可以使用其他策略和免费策略来解决这个问题(HXTT是不是免费的):
http://www.programmingforfuture.com/2011/06/how-to-use-ms-access-with-hibernate.html
Personaly我试图逆向工程ms数据库时遇到异常(org.hibernate.exception.GenericJDBCException:读取主键元数据时出错),但它适用于很多人。
“我不知道它在哪里工作完美,但我做了一个使用SQLServerDialect连接msaccess数据库文件的实验”。任何使用驱动程序连接到尚未经过Hibernate认证的数据库才能正常使用它们的软件的用户都面临着风险。认证意味着不仅仅是连接和运行单个SELECT查询。请引用“很多人”是谁。我没有统计数据支持这一说法。 – duffymo 2012-06-05 10:01:35
这里的实际解决方案!
经过1天试用不同的解决方案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>
,你是好去。 ;)
使用这种方法时,org.hibernate.dialect.SQLServerDialect真的是正确的方言吗? – JWill 2014-12-03 14:56:29
是的。给出的例子是来自我的工作解决方案的复制粘贴。我假设驱动程序基本上像一个适配器和_makes_ accdb文件_SQLServerDialect-compatible_。 – 2014-12-03 15:49:51
@GergelyKovács嗨,我知道这个问题很老,但你的程序一直工作得很好吗?我尝试过但是有一些查询它有SqlSyntaxErrorException – 2017-04-24 20:33:17
作为一个晚期笔记(评论是不适用于我):UCanAccess肯定有效,虽然我还没有(有)写数据的经验。不管怎么说,对于方言的使用,我用
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
因为UCanAccess使用HSQLDB运行,我想这话是最好的搭配。这里没有任何sql实际触及ms访问,jackcess直接读取和写入访问mdb文件,没有任何微软代码可以解释任何sql的任何地方,据我所知,因此使用SQLServerDialect将会只会混淆HSQLDB代码试图理解它。
UCanAccess JDBC驱动程序确实使用HSQLDB作为其后备数据库,但UCanAccess还预处理SQL语句以尝试并尽可能地支持Access SQL方言。 UCanAccess团队希望能够为Hibernate用户提供“UCanAccessDialect”,但这是目前待办事项列表中的许多事情之一。 – 2016-02-09 13:19:31
这只是为了与现有的Access数据库现有的SQL兼容,对吧?尽管如此,sql最终还是会转化为jackcess-calls,我猜? – 2016-02-12 16:22:27
这是正确的。目的是尽可能地支持Access SQL语法。最终,UCanAccess仍然会使用Jackcess API来实际更新数据库文件。 – 2016-02-12 16:35:12
- 1. 如何使用包含在休眠中
- 2. 如何在休眠中使用@Qualifier
- 3. 在休眠中使用JTable
- 4. 在休眠中使用LIKE%
- 5. 在休眠中使用longblob
- 6. 休眠MS SQL连接
- 7. 在休眠中使用MS SQL/Oracle的XML数据类型
- 8. 如何在MS Access
- 9. 如何在休眠
- 10. 休眠中的DOM使用
- 11. 使用DAO休眠
- 12. 在线使用MS Access
- 13. 我如何使用MS-Access查询转换行中的MS Access列(选择statment)
- 14. 使用的MS Access
- 15. 如何从在MS Access
- 16. 我如何在MS Access
- 17. 如何实现在休眠
- 18. 如何使用C#创建MS Access宏?
- 19. 如何使用OneToOne与休眠公式
- 20. 休眠 - 如何使用外键
- 21. 如何使用休眠进行连接
- 22. 如何使用HAVING COUNT(*)与休眠
- 23. 休眠/ JPA:如何使用InheritanceType.JOINED
- 24. 如何配置休眠使用Apache cxf
- 25. 如何使用休眠会话?
- 26. 如何使用休眠<subselect>:
- 27. org.hibernate.ejb.Ejb3Configuration在休眠中弃用
- 28. 在ms-access中使用openform后followhyperlink
- 29. 在C中使用MS Access Lookup字段#
- 30. 在MS Access中使用.Net的方法
如果你不介意。为什么?难道不可能像SQLite那样使用另一个数据库? – 2009-11-17 15:05:58
虽然我认为寻找其他东西是一个很好的建议,但SQLite可能不是“最好的”选择,因为它不被Hibernate支持(即使这样的http://code.google.com/p/hibernate- sqlite /确实存在)。 – 2009-11-17 15:20:25
听起来@VincentRamdhanie从未在公司环境中工作过:D – 2016-10-05 14:37:37