2009-11-17 5 views
11

MS Access에서 최대 절전 모드를 사용하고 싶습니다. 어느 방언을 사용해야하나요? MS 액세스로 최대 절전 모드 구성 파일을 나에게 줄 수 있습니까?MS Access에서 최대 절전 모드를 사용하려면 어떻게해야합니까?

+0

괜찮 으면. 왜? SQLite와 같은 다른 DB를 사용할 수 없습니까? –

+0

뭔가 다른 것을 찾는 것이 좋은 제안이지만, SQLite는 Hibernate에서 잘 지원되지 않기 때문에 ("http://code.google.com/p/hibernate- sqlite/do 존재). –

+0

@VincentRamdhanie는 기업 환경에서 일한 적은 없지만 PS에는 D –

답변

11

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 액세스가 아닌 돌의 요구 사항을 작성하는 경우, 어쩌면 당신이 뭔가처럼 ... 음, 아무것도 사용을 고려해야합니다.

+2

+1입니다. 내가 할 수 있다면 실제로 질문에 대답하기 위해 또 다른 +1을 얻을 수 있습니다. –

+1

-1 이유에 대한 설명없이 PS에 대해 - Jet/ACE와 같은 파일 서버 데이터 저장소를 사용하는 것이 부적절하지 않으면 Hibernate를 사용할 수있는 응용 프로그램이 많이 있습니다. –

+0

@David Hibernate의 공식적인 지원이 충분하지 않은가요? 나에게 그것은 제 3 자 방언 공급자에게 의존하고 싶지 않다는 것입니다. –

1

@ Firstthumb. 죄송합니다.이 질문은 답변이 아니며 의견을 말하고있는 것입니다. 나는 MS Access를 사용하여 Football World Cup 2010의 로컬 팁 경쟁을 개발하는 것을 고려했다. 나는 Oledb를 사용하여 MS Access에 직접 액세스 할 수 있었지만, .NET으로 이동하는 많은 Java 개발자를 재촉하기위한 훈련으로, 나는 DAO 레이어로서 nHibernate의 사용법을 보여주고 싶었다.

JBoss/Hibernate 팀에서 강력하고 지원되는 방언이 없거나 다른 고려 사항이 있는지 조사한 후 MSAccess 사용에 대한 연습을 포기하기로 결정했습니다. 대신 무료 SQL Express 2008을 다운로드했습니다. 여전히 .NET에서 MSACCESS를 사용하고자하는 사람들을 위해

(HXTT은 무료로하지 않습니다)

1

당신은이 문제를 해결하기 위해 다른 전략과 무료 전략을 사용할 수 있습니다) this link를 참조하십시오

http://www.programmingforfuture.com/2011/06/how-to-use-ms-access-with-hibernate.html

Personality 나는 많은 사람들이 ms 데이터베이스 (org.hibernate.exception.GenericJDBCException : 기본 키 메타 데이터를 읽는 중 오류)를 리버스 엔지니어링하려고 시도 할 때 예외가 발생했다.

+1

"어디서 완벽하게 작동하는지 모르겠지만 SQLServerDialect를 사용하여 msaccess 데이터베이스 파일에 연결하는 실험을했습니다". 드라이버를 사용하여 Hibernate가 자신의 소프트웨어에서 제대로 작동하도록 인증되지 않은 데이터베이스에 연결하는 사람은 위험을 감수하고 있습니다. 인증은 단일 SELECT 쿼리를 연결하고 실행하는 것 이상의 의미를가집니다. "많은 사람들"이 누구인지 인용 해주십시오. 이 주장을 뒷받침 할 통계가 없습니다. – duffymo

9

실제 해결책은 여기에 있습니다.

하루를 보내고 다른 솔루션 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>   

봄 설정 : 당신이 갈 수 있어요

<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> 

합니다. ;)

+0

이 접근법을 사용하는 동안 org.hibernate.dialect.SQLServerDialect는 실제로 올바른 언어인가? – JWill

+0

입니다. 주어진 예제는 제 작업 솔루션의 사본 붙여 넣기입니다. 나는 드라이버가 기본적으로 어댑터처럼 작동하고 _makes_ accdb 파일 _SQLServerDialect-compatible_을 가정합니다. –

+0

@ GergelyKovács 안녕하세요, 저는 질문이 꽤 오래된 것을 알고 있습니다 만, 당신의 프로그램 작업을 계속 잘 해왔습니까? 나는 그것을 시도했지만 일부 쿼리에는 SqlSyntaxErrorException이있다. –

1

늦은 메모 (내게 댓글을 쓸 수 없음) : UCanAccess는 분명히 데이터를 쓰는 데 경험이 없지만 제대로 작동합니다. 어쨌든, 방언에 관한 것은 사용, 나는

  <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/> 

UCanAccess는 HSQLDB를 사용하기 때문에

실행, 나는 사투리가 가장 일치하는 것으로 가정합니다.여기에 그림에서 ms 액세스를 실제로 타격하는 sql은 없으며 jackcess는 액세스 mdb 파일에 직접 읽고 씁니다. 이해할 수있는 한 SQL을 해석하는 Microsoft 코드가 없으므로 SQLServerDialect를 사용합니다. 그것을 이해하려고하는 HSQLDB 코드 만 혼란스럽게합니다.

+0

UCanAccess JDBC 드라이버가 지원 데이터베이스로 HSQLDB를 사용하는 동안 UCanAccess는 SQL 문을 사전 처리하여 Access SQL 언어를 가능한 한 많이 지원하도록 시도한다. UCanAccess 팀은 Hibernate 사용자를 위해 "UCanAccessDialect"를 제공 할 수 있기를 희망하지만, 현재는해야할 일 목록에있는 많은 것들 중 하나입니다. –

+0

그것은 기존 Access 데이터베이스의 기존 SQL과의 호환성을위한 것입니다. 맞습니까? 아직도 SQL은 결국 jackcess-calls로 변환 될 것입니다. –

+0

맞습니다. 가능한 한 Access SQL 구문을 지원하기위한 것입니다. 궁극적으로 UCanAccess는 Jackcess API를 사용하여 실제로 데이터베이스 파일을 업데이트합니다. –

관련 문제