Chcę użyć hibernacji z MS Access. Który dialekt powinienem używać i czy możesz dać mi przykładowy plik konfiguracji hibernacji z MS Access?Jak mogę używać hibernacji z MS Access?
Odpowiedz
Dla MS Access potrzebny jest dialekt od HXTT. Będziesz musiał użyć hibernate support package dostarczonego przez HXTT. Istnieje również sample project, który można sprawdzić w pełni działający przykład.
Poniżej próbka minimalna konfiguracja:
# 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: Jeśli MS Access nie jest napisany w wymogu kamienia, może należy rozważyć użycie czegoś innego jak ... no, cokolwiek.
+1 dla PS. Gdybym mógł, dostałbyś kolejne +1 za faktyczne udzielenie odpowiedzi na to pytanie. –
-1 dla PS bez żadnego wyjaśnienia dlaczego - istnieje wiele aplikacji, które mogą być używane w Hibernate, bez korzystania z magazynu danych serwera plików, takiego jak Jet/ACE. –
@ David nie jest nieoficjalnym wsparciem z Hibernate wystarczy dla ciebie? Dla mnie nie chcę polegać na dostawcy dialektów stron trzecich. –
@Firstthumb. Niestety, to nie jest odpowiedź, ale tylko wyrażenie komentarza. Byłem w tej samej łodzi - biorąc pod uwagę użycie MS Access, aby rozwinąć lokalną konkurencję dla piłkarskich mistrzostw świata w piłce nożnej 2010. Mógłbym uzyskać dostęp do MS Access bezpośrednio za pomocą Oledb, ale jako ćwiczenie treningowe, aby ponownie nauczyć się kilku programistów Java przeprowadzających się do .NET, Chciałem pokazać użycie nHibernate jako warstwy DAO.
Po zbadaniu niedostępności solidnego i obsługiwanego dialektu z zespołu JBoss/Hibernate i innych względów, postanowiłem zrezygnować z ćwiczenia przy użyciu MSAccess. Zamiast tego pobrałem darmowy SQL Express 2008.
Dla tych, którzy nadal chcą korzystać MSACCESS w .NET, proszę zobaczyć this link)
Można użyć innej strategii i bezpłatną strategię, aby rozwiązać ten problem (HXTT nie jest za darmo):
http://www.programmingforfuture.com/2011/06/how-to-use-ms-access-with-hibernate.html
Osobisty Mam wyjątek, gdy próbuję odwrócić inżynierii bazy danych ms (org.hibernate.exception.GenericJDBCException: błąd podczas odczytu meta danych klucza podstawowego), ale działa dla wielu osób.
"Nie wiem, gdzie działa idealnie, ale zrobiłem eksperyment używając SQLServerDialect do połączenia pliku bazy danych msaccess". Każdy, kto używa sterownika do połączenia się z bazą danych, która nie uzyskał certyfikatu Hibernate, aby działał poprawnie z tym urządzeniem, ryzykuje. Certyfikacja oznacza więcej niż podłączanie i uruchamianie pojedynczego zapytania SELECT. Proszę zacytować, kim są "wielu ludzi". Nie mam statystyk potwierdzających to stwierdzenie. – duffymo
Rzeczywiste rozwiązanie tutaj!
Po spędzeniu 1 dnia wypróbowania różnych rozwiązań ODBC, HXTT itp. Znalazłem to piękno :) http://ucanaccess.sourceforge.net/site.html.
To nie może być prostsze: wystarczy dodać słoiki z witryny do biblioteki projektu i.
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>
Wiosna config:
<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>
i jesteś dobry, aby przejść. ;)
Czy org.hibernate.dialect.SQLServerDialect jest rzeczywiście właściwym dialektem podczas korzystania z tego podejścia? – JWill
To jest. Podany przykład jest kopią wklejoną z mojego działającego rozwiązania. Zakładam, że sterownik działa zasadniczo jak adapter i _ tworzy pliki accdb _SQLServerDialect-compatible_. –
@ GergelyKovács hi wiem, że pytanie jest dość stare, ale czy twój program działa dobrze przez całą drogę? próbowałem go, ale z niektórymi zapytaniami ma SqlSyntaxErrorException –
Jako późna notatka (komentowanie nie jest dostępne dla mnie): UCanAccess na pewno działa, chociaż nie mam (jeszcze) doświadczenia w pisaniu danych. Tak czy inaczej, w odniesieniu do korzystania z dialektem, biegnę z
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
ponieważ UCanAccess używać hsqldb, a przypuszczam, że dialekt jest najlepszy mecz.Nie ma żadnego pliku sql, który w tym miejscu ma dostęp do ms-access, jack czyta i zapisuje bezpośrednio do pliku mdb dostępu, nie ma kodu microsoft interpretującego jakikolwiek sql w dowolnym miejscu, o ile mogę to zrozumieć, i dlatego użycie SQLServerDialect będzie tylko mylić kod HSQLDB próbując go zrozumieć.
Podczas gdy prawdą jest, że sterownik JDBC UCanAccess używa HSQLDB jako bazy danych, UCanAccess również wstępnie przetwarza instrukcje SQL, aby próbować obsługiwać dialekt Access SQL w maksymalnym możliwym stopniu. Zespół UCanAccess ma nadzieję, że będzie w stanie zapewnić "UCanAccessDialect" dla użytkowników Hibernate, ale jest to jedna z wielu rzeczy, które aktualnie znajdują się na liście rzeczy do zrobienia. –
To byłoby po prostu dla zgodności z istniejącym sql z istniejących baz danych programu Access, prawda? Nadal sql byłby przetłumaczony na połączenia-jackcess w końcu, tak myślę? –
Zgadza się. Chodzi o to, aby w jak największym stopniu obsługiwać składnię SQL Access. Ostatecznie UCanAccess nadal będzie korzystał z interfejsu Jackcess API, aby faktycznie aktualizować plik bazy danych. –
- 1. MS Access Properties
- 2. MS Access sporządziły sprawozdania
- 3. Nhibernate i MS Access
- 4. Jak korzystać z SubSonic z bazą danych MS Access
- 5. Tabela połączeń MS Access z VBA
- 6. Jak mogę przekonwertować to zapytanie SQL na zapytanie MS Access?
- 7. MS Access biblioteka dla Pythona
- 8. Hiperłącze w raporcie MS Access
- 9. Dane przestawne w MS Access
- 10. sterownik JDBC połączenia MS Access
- 11. Jak utworzyć procedurę przechowywaną w MS Access?
- 12. Jak korzystać z sftp z modułu bazy danych MS Access?
- 13. MS Access SQL, zmiana typu danych
- 14. Czy mamy transakcje w MS-Access?
- 15. Pobieranie listy tabel w pliku MS Access
- 16. Wybierz rekordy pomijając wiersze w MS Access
- 17. Tworzenie View w MS Access 2007
- 18. Udostępnianie pomocy w formie w MS Access
- 19. MS Access - VBA: Błąd kompilacji: oczekuje: =
- 20. Zapobieganie zapisywaniu rekordów zamykających w MS Access
- 21. Nowy administrator MS Access, modyfikacja istniejącego makra
- 22. Dapper & MS Access - Czytaj prace, Napisz nie
- 23. Strona asp.net LINQ przeciwko MS Access.
- 24. MS Access to Oracle easy Conversion/Migration
- 25. Jak mogę się dowiedzieć, jakie tabele SQL Server są połączone z MS Access?
- 26. Wyjście MS Access Query do Excela z vba
- 27. Jak mogę wprowadzić wiele warunków w LIKE operator dla MS Access SQL
- 28. MS Access dostać nazwę pliku wybrany z FileDialog
- 29. Jak podłączyć MS Access do Pythona za pomocą pyodbc
- 30. Jak odwołać się do podformularza w MS Access
Jeśli nie masz nic przeciwko. Czemu? Czy nie byłoby możliwe przekierowanie do innej bazy danych, takiej jak SQLite? –
Podczas gdy myślę, że szukanie czegoś innego jest dobrą sugestią, SQLite może nie być "najlepszą" alternatywą, ponieważ nie jest dobrze obsługiwane przez Hibernate (nawet jeśli takie rzeczy jak ten http://code.google.com/p/hibernate- sqlite/do istnieje). –
Wygląda na to, że @VincentRamdhanie nigdy nie pracowała w środowisku korporacyjnym: D –