達夢(DM)作為國產通用數據庫,提供標準 JDBC 驅動,兼容主流持久層框架與應用伺服器連接池。本文匯總六大場景的完整配置範例,涵蓋驅動類、URL 格式、連接池參數與 JNDI 綁定。
// 驅動類
String driver = "dm.jdbc.driver.DmDriver";
// URL 格式:jdbc:dm://host:port/dbname
String url = "jdbc:dm://localhost:12345/dbname";
String user = "username", pwd = "password";
// 顯式註冊
DriverManager.registerDriver(new dm.jdbc.driver.dmDriver());
// 或隱式加載
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pwd);
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${SimpleDriver}"/>
<property name="JDBC.ConnectionURL" value="${SimpleUrl}"/>
<property name="JDBC.Username" value="${SimpleUsername}"/>
<property name="JDBC.Password" value="${SimplePassword}"/>
<property name="Pool.MaximumActiveConnections" value="15"/>
<property name="Pool.MaximumIdleConnections" value="15"/>
<property name="Pool.MaximumWait" value="1000"/>
</dataSource>
</transactionManager>
<dataSource type="DBCP">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumWait" value="60000"/>
<property name="Pool.ValidationQuery" value="select now"/>
</dataSource>
<dataSource type="JNDI">
<property name="DataSource" value="java:comp/env/jdbc/jpetstore"/>
</dataSource>
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">dm.jdbc.driver.DmDriver</property>
<property name="connection.url">jdbc:dm://localhost:12345/SYSTEM</property>
<property name="connection.username">SYSDBA</property>
<property name="connection.password">SYSDBA</property>
<property name="jdbc.fetch_size">50</property>
<property name="jdbc.batch_size">100</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">100</property>
<property name="c3p0.timeout">600</property>
<property name="c3p0.max_statements">50</property>
<property name="hibernate.show_sql">true</property>
<property name="dialect">org.hibernate.dialect.DmDialect</property>
<mapping resource="com/dm/vo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
注意:DmDialect 需向達夢官方獲取。
將 DmJdbcDriver.jar 放入 $CATALINA_HOME/common/lib,修改 server.xml:
<Context path="/yourApp" docBase="D:/yourApp" reloadable="true">
<Resource name="jdbc/DMDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/DMDB">
<parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
<parameter><name>driverClassName</name><value>dm.jdbc.driver.DmDriver</value></parameter>
<parameter><name>url</name><value>jdbc:dm://localhost:12345/SYSTEM</value></parameter>
<parameter><name>username</name><value>SYSDBA</value></parameter>
<parameter><name>password</name><value>SYSDBA</value></parameter>
<parameter><name>maxActive</name><value>50</value></parameter>
<parameter><name>maxIdle</name><value>20</value></parameter>
<parameter><name>maxWait</name><value>500</value></parameter>
</ResourceParams>
</Context>
代碼獲取:DataSource ds = (DataSource) new InitialContext().lookup("java:/comp/env/jdbc/DMDB");
$JBOSS_HOME/server/default/lib;standardjaws.xml、standardjbosscmp-jdbc.xml、ejb-deployer.xml 中的 DefaultDS → DMDS;DM-ds.xml 至 deploy 目錄:<datasources>
<local-tx-datasource>
<jndi-name>DMDS</jndi-name>
<connection-url>jdbc:dm://localhost:12345/SYSTEM</connection-url>
<driver-class>dm.jdbc.driver.DmDriver</driver-class>
<user-name>SYSDBA</user-name>
<password>SYSDBA</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata><type-mapping>DM</type-mapping></metadata>
</local-tx-datasource>
</datasources>
驅動放入 $APUSIC_HOME/lib,修改 datasources.xml:
<datasources>
<datasource name="DMDS" jndi-name="jdbc/DMDS"
driver-class="dm.jdbc.driver.DmDriver"
url="jdbc:dm://localhost:12345/SYSTEM">
<property name="user" value="SYSDBA"/>
<property name="password" value="SYSDBA"/>
<property name="test-before-reused" value="true"/>
<property name="test-command" value="select now"/>
</datasource>
</datasources>
統一要點:驅動類固定為 dm.jdbc.driver.DmDriver,URL 格式固定為 jdbc:dm://host:port/dbname,用戶名/密碼默認 SYSDBA/SYSDBA。生產環境請務必修改默認口令並啟用連接池監控。