Hibernate의 MariaDB 방언 클래스 이름은 무엇입니까?
Hibenate에서는 MariaDB를 사용하고 있습니다만, MariaDB의 사투리 클래스명을 찾을 수 없었습니다.
하이버네이트에서 MySQL5 사투리의 이름은
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
Oracle 10g용
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
MariaDB의 사투리 클래스 이름은 무엇입니까?
매우 짧은 답변
이 글의 현재 사투리는 다음과 같습니다.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB102MariaDB 서버 10.2용 변칙
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB103MariaDB 서버 10.3 이후의 경우 시퀀스 지원을 제공합니다.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB10MariaDB 서버 10.0 및 10.1용 Dialect
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB53MariaDB 서버 5.3 및 이후 5.x 버전용 Dialect.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB 서버 5.1 및 5.2용 MariaDBDialect.
단답
MariaDB 서버를 사용할 때는 MySQL이 아닌 MariaDB Connector/J 및 MariaDB Hibernate 사투리를 사용해야 합니다.MariaDB는 드롭인 대체품으로 작성되었으며 MySQL 버전을 사용할 때 기본 기능이 작동할 가능성이 높지만 미묘한 문제가 발생하거나 특정 기능을 놓칠 수 있습니다.
사용 가능한 MariaDB 방언의 전체 목록은 현재 휴지 상태 사용자 가이드에 나와 있지 않고 휴지 상태 JavaDoc에 나와 있습니다.MariaDB 서버 버전에 따라 해당 방언 버전을 선택해야 합니다.이 글의 현재 사투리는 다음과 같습니다.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB102MariaDB 서버 10.2용 변칙
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB103MariaDB 서버 10.3 이후의 경우 시퀀스 지원을 제공합니다.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB10MariaDB 서버 10.0 및 10.1용 Dialect
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB53MariaDB 서버 5.3 및 이후 5.x 버전용 Dialect.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB 서버 5.1 및 5.2용 MariaDBDialect.
상세한 사용방법에 대해서는 사투리 소스 코드를 참조할 필요가 있는 경우가 있습니다.(일부 사투리 소스에는 JavaDoc 이외의 사용정보 코멘트가 있습니다.
방언의 를 사용할 수 .storage_engine
휴지 상태 변수.를 들면, '먹다'와 같이요.hibernate.dialect.storage_engine = innodb
다른 될 수 이를 IMO는 다른 MariaDB 서버 버전으로 전환하면 기본값이 변경될 수 있으므로 이를 명시적으로 수행해야 합니다.
초를하지 않음) .1 변수를 할 수 .2보다 오래된 MariaDB 서버를 사용하는 경우(소수 초수를 지원하지 않음) 매개 변수를 지정할 수 있습니다.useFractionalSeconds=false
MariaDB Connector/JJ로 변경.이러한 값이 비교 쿼리에 사용되고 있는 경우(플레인 JDBC를 사용하고 있는 경우라도) 시간 비교 문제가 발생할 수 있으며, 이로 인해 휴지 상태 버전 관리 문제 및 시간 유형에 대한 낙관적인 잠금 문제가 발생할 수 있습니다.
장답
Hibernate의 MariaDB 방언(이 문서에서는 5.3)은 Hibernate User Guide에 기재되어 있습니다."짧은 이름" 뒤에 이어지는 언급은 다음과 같습니다.
MariaDB: MariadB 데이터베이스 지원.새로운 버전에서도 동작 가능
MariaDB53: MariadB 데이터베이스 버전 5.3 이후 지원.
그러나 사용 가능한 공식 MariaDB 방언의 전체 목록은 Hibernate JavaDoc에서 확인할 수 있습니다.현재 리스트는 다음과 같습니다.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB102MariaDB 서버 10.2용 변칙
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB103MariaDB 서버 10.3 이후의 경우 시퀀스 지원을 제공합니다.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB10MariaDB 서버 10.0 및 10.1용 Dialect
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB53MariaDB 서버 5.3 및 이후 5.x 버전용 Dialect.
- org.syslogate.syslog.syslog 를 지정합니다.MariaDB 서버 5.1 및 5.2용 MariaDBDialect.
각 사투리 후계자는 이전 사투리 버전에서 설정을 상속합니다.은 MariaDB입니다.MariaDB103Dialect > MariaDB102Dialect > MariaDB10Dialect > MariaDB53Dialect > MariaDBDialect > MySQL5Dialect > MySQLDialect > Dialect
MariaDB는 MySQL을 대체하기 위해 설계되었습니다.하지만 시간이 지날수록 데이터베이스는 분산될 것입니다.대부분의 기본 기능은 문제 없이 작동하므로 Connector/J 클라이언트(MySQL 서버의 MariaDB 클라이언트 및 그 반대)를 스왑할 수 있으며, 방언(MariaDB 클라이언트의 MySQL 방언 및 그 반대)을 스왑할 수 있습니다.그러나 예상치 못한 문제를 일으킬 수 있는 미묘한 차이가 있습니다.예를 들어 MySQL Connector/J 클라이언트에는 서버 버전에 대한 하드 코드 검사가 포함되어 있습니다.MariaDB 서버를 사용할 때 이 체크가 실패하여 MySQL sendFractionalSeconds 클라이언트 매개 변수와 같은 일부 기능이 비활성화됩니다.이로 인해 소수 초가 비활성화되므로 MySQL 클라이언트에서는 분수가 잘리고 MariaDB 클라이언트에서는 잘리지 않습니다.(이는 최대 정밀도가 아닌 SQL 날짜/시간 유형과 함께 버전 관리를 사용할 경우 최적의 잠금 문제를 초래할 수도 있습니다.이 경우 최대 정밀도 6을 사용합니다.)
또한 MariaDB 방언은 MariaDB 전용 기능을 제공할 것으로 예상됩니다.http://in.relation.to/2017/02/16/mariadb-dialects/
머지않아 MariaDB에 의해 도입된 새로운 기능을 기반으로 새로운 사투리를 추가할 예정입니다.
...
MariaDB를 사용하는 경우 MariaDB 버전을 적절한 휴지 상태 사투리와 일치시키는 것이 훨씬 쉬우므로 앞으로는 MariaDB 고유의 사투리를 사용하는 것이 좋습니다.
https://hibernate.atlassian.net/browse/HHH-11457은 다음과 같이 말하고 있습니다.
MySQL과 MariaDB의 방향이 다르기 때문에 MariaDB 방언도 제공하고 싶습니다.
예를 들어, Hibernate 사용자는 MySQLInnoDb57Dialect를 사용하여 MariaDB 5.3 이후 사용 가능한 타임스탬프를 마이크로초 단위로 처리해야 한다는 것을 깨닫는 것은 그다지 직관적이지 않습니다.
휴지 상태 사용자 안내서에는 방언 사용 방법에 대한 일부 사용 정보가 나와 있지 않습니다.사용자 가이드와 API 문서를 조합해도 충분하지 않을 수 있습니다.사용방법에 대한 정보가 소스코드에서 필요할 수 있습니다.예를 들어 MariaDB53Dialect.java에는 유용한 숨겨진 비 JavaDoc 코멘트가 포함되어 있습니다.
엔진을 MyISAM, InnoDB 의 MySQL 스토리지 을 전환할 수 .MySQL57InnoDBDialect
★★★★★★★★★★★★★★★★★」MySQL57Dialect
그러나 Hibernate 블로그 투고에서 언급된 바와 같이 Hibernate 5.2.8부터 MySQL 방언 계층을 리팩터링했습니다.스토리지 엔진을 선택하려면 환경 변수 또는 시스템 속성을 사용해야 합니다.hibernate.dialect.storage_engine
. : :hibernate.dialect.storage_engine = innodb
XtraDB(MariaDB) 10.1(MariaDB) 10.InnoDB가 있다.가 있을 수 Hibernate를 ★★★★★★★★★★★★★★★★★★,storage_engine
★★★★★★★★에 관한 정보storage_engine
변수(사용자 가이드에서는 언급되지 않음)는 의 소스에 있습니다.
초를하지 않음) .1 변수를 할 수 .2보다 오래된 MariaDB 서버를 사용하는 경우(소수 초수를 지원하지 않음) 매개 변수를 지정할 수 있습니다.useFractionalSeconds=false
그렇지 않으면 MariaDB Connector/J는 내부적으로 타임스탬프를 잘라내지 않으며, 이로 인해 시간 비교 문제가 발생할 수 있으며, 이로 인해 휴지 상태 버전 관리 문제 및 시간 유형에 대한 최적 잠금 문제가 발생할 수 있습니다.
여기서 발표한 바와 같이 Hibernate ORM 5.2.8(2017년 2월 15일경)부터 시작하여
org.hibernate.dialect.MariaDB53Dialect
그리고.
org.hibernate.dialect.MariaDBDialect
사용할 수 있습니다.발표로 결론짓다
MariaDB를 사용하는 경우 MariaDB 버전을 적절한 휴지 상태 사투리와 일치시키는 것이 훨씬 쉬우므로 앞으로는 MariaDB 고유의 사투리를 사용하는 것이 좋습니다.
여기서부터 "MySQLInnoDBDialect 대신 MySQL5InnoDBDialect 또는 MySQL57InnoDBDialect여야 합니다"라고 언급되었습니다.
리스트의 상세한 것에 대하여는, http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#database-dialect 를 참조해 주세요.
5.2.17에 새로운 MariaDB 사투리가 추가되었습니다.JIRA 참조 및 커밋
MariaDB는 mysql과 호환되므로 Mysql5Dialect를 사용해야 합니다.
언급URL : https://stackoverflow.com/questions/37066024/what-is-the-mariadb-dialect-class-name-for-hibernate
'programing' 카테고리의 다른 글
최신 JDK 업데이트 후 Java가 MySQL 5.7에 연결할 수 없는 이유와 수정 방법은 무엇입니까?(ssl.SSLHandshakeException:적절한 프로토콜 없음) (0) | 2023.01.15 |
---|---|
JavaScript에서 개체 배열과 다른 값을 얻는 방법 (0) | 2023.01.15 |
사용자가 IE를 사용하고 있는지 확인합니다. (0) | 2023.01.15 |
JavaScript에는 인터페이스 타입(Java의 'interface' 등)이 있습니까? (0) | 2022.12.31 |
Django ORM에서 select_related와 prefetch_related의 차이점은 무엇입니까? (0) | 2022.12.31 |