我想在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