/***************************************
- 达梦8 JDBC驱动版本说明
/***************************************
- DmJdbcDriver16 对应 Jdk1.6 及以上环境
- DmJdbcDriver17 对应 Jdk1.7 及以上环境
- DmJdbcDriver18 对应 Jdk1.8 及以上环境
/***************************************
- 达梦8 hibernate方言包对应版本说明
/***************************************
jar包在dialect目录下:
- DmDialect-for-hibernate2.0.jar 对应 Jdk1.4及以上, hibernate2.0 环境
- DmDialect-for-hibernate2.1.jar 对应 Jdk1.4及以上, hibernate2.1 – 2.X 环境
- DmDialect-for-hibernate3.0.jar 对应 Jdk1.4及以上, hibernate3.0 环境
- DmDialect-for-hibernate3.1.jar 对应 Jdk1.4及以上, hibernate3.1 – 3.5 环境
- DmDialect-for-hibernate3.6.jar 对应 Jdk1.5及以上, hibernate3.6 – 3.X 环境
- DmDialect-for-hibernate4.0.jar 对应 Jdk1.6及以上, hibernate4.0 – 4.X 环境
- DmDialect-for-hibernate5.0.jar 对应 Jdk1.7及以上, hibernate5.0 – 5.2 环境
- DmDialect-for-hibernate5.3.jar 对应 Jdk1.7及以上, hibernate5.3 环境
- DmDialect-for-hibernate5.4.jar 对应 Jdk1.7及以上, hibernate5.4 环境
- DmDialect-for-hibernate5.5.jar 对应 Jdk1.7及以上, hibernate5.5 环境
- DmDialect-for-hibernate5.6.jar 对应 Jdk1.7及以上, hibernate5.6 环境
注1:以上的hibernate版本指的是hibernate ORM版本,注意区分hibernate search版本
/***************************************
- Hibernate.cfg.xml配置说明
/***************************************
1、驱动名称
dm.jdbc.driver.DmDriver
2、方言包名称
org.hibernate.dialect.DmDialect
/***************************************
- 其他jar包说明
/***************************************
- DmDictionary.jar openjpa1.2方言包,对应 Jdk1.6及以上环境
- dmjooq-dialect-3.12.3.jar jooq方言包,对应 Jdk1.8及以上环境
- dm8-oracle-jdbc16-wrapper.jar oracle 到达梦的JDBC驱动桥接,应用中如果使用了非标准的oracle JDBC特有的对象,无需修改应用代码,可以桥接到达梦的JDBC连接达梦数据库,对应 Jdk1.6及以上环境
- DmHibernateSpatial-1.0.jar hibernate spatial方言包,对应hibernate spatial 1.0环境,对应 Jdk1.5及以上环境
- DmHibernateSpatial-1.1.jar hibernate spatial方言包,对应hibernate spatial 1.1环境,对应 Jdk1.5及以上环境
- gt-dameng-2.8.jar GeoServer 2.8环境方言包,对应 Jdk1.6及以上环境
- gt-dameng-2.11.jar GeoServer 2.11环境方言包,对应 Jdk1.8及以上环境
- gt-dameng-2.15.jar GeoServer 2.15环境方言包,对应 Jdk1.8及以上环境
遇到问题:
1.Caused by: java.lang.NoClassDefFoundError: org/hibernate/hql/spi/id/IdTableSupport
DmDialect相对hibernate太高,注意版本
2.Java.lang.NumberFormatException:For input string:””
达梦的BUG,使用其他版本可以解决
3.2023-04-24 13:46:56.192 [ERROR] com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:865) - init datasource error, url: jdbc:dm://192.168.3.1:5236/DAMENG
dm.jdbc.driver.DMException: 网络通信异常
正确的jdbc url=jdbc:dm://192.168.3.1:5236
4.一个SQL导致CPU和内存刷到100%
根本原因:一个多表关联的sql导致CPU和内存刷到100%,后来在sql原来的基础上多加了一个查询条件解决了问题
如果找不到根本原因可以尝试以下办法缓解:
修改内存使用大小,路径/dmdb/dmdb/dm.ini,参数MAX_OS_MEMORY改为70,对应BUFFER也要改成对应的值,比如MAX_OS_MEMORY是70,BUFFER就是700
5.查询序列使用BigDecimal接收的会报错,应该使用BigInteger

6.自增长的ID要设置为序列,或者代码生成ID,比如UUID,尽量不使用数据库自增长

7.达梦低版本的timestamp最大长度是6,高版本是9,发现的高版本是8.1.2.192,低版本是8.1.1.188
8. sql规范兼容
DM 提供了 COMPATIBLE_MODE 参数来设置数据库的兼容性模式,0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL, 5:兼容 DM6,6:部分兼容 TERADATA。该参数默认为 0,该参数为静态参数,需要重启数据库后生效。
修改方式有两种:
1.在 dm.ini 文件中修改 COMPATIBLE_MODE 参数的值,路径:/dmdb/dmdb/dm.ini 2.利用 SQL 语句修改 COMPATIBLE_MODE 参数的值
SP_SET_PARA_VALUE(2,‘COMPATIBLE_MODE’,2);
或
ALTER SYSTEM SET ‘COMPATIBLE_MODE’=2 SPFILE;
9.查看达梦版本
SELECT *,ID_CODE FROM VVERSION;select∗fromvVERSION;
select * from vVERSION;select∗fromvinstance;
这两个脚本都是查版本的
官方技术文档入口:https://eco.dameng.com/document/dm/zh-cn/start/
文章详细列出了达梦数据库不同版本的JDBC驱动和Hibernate方言对应的JDK与HibernateORM版本。提到了配置Hibernate.cfg.xml时的驱动名称和方言包名称。同时,文章指出了几个遇到的问题,如NoClassDefFoundError、NumberFormatException、网络通信异常等,并给出了相应的解决方案,包括调整数据库兼容性模式和优化SQL查询。此外,还提供了查看达梦数据库版本的方法和官方技术文档入口。



2909

被折叠的 条评论
为什么被折叠?



