文档告诉我们像这样加载JDBC驱动程序
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
https://db.apache.org/derby/papers/DerbyTut/embedded_intro.html
但是没有并且立即获得连接它可以正常工作
connection = DriverManager.getConnection("jdbc:derby:" + pathDerby + ";create=true");
为什么?
日志版本:引导Derby版本Apache Software Foundation - Apache Derby - 10.13.1.1 - (1765088)
编辑:
实际上,如果您关闭Derby引擎并希望在同一个JWM进程中再次打开它(我在集成测试中一直这样做),则需要它。
关闭后
DriverManager.getConnection("jdbc:derby:;shutdown=true");
你应该像这样重新打开
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
connection = DriverManager.getConnection("jdbc:derby:" + pathDerby + ";create=true");
答案 0 :(得分:2)
DriverManager方法getConnection和getDrivers已得到增强,可支持Java Standard Edition Service Provider机制。 JDBC 4.0驱动程序必须包含文件META-INF / services / java.sql.Driver。此文件包含java.sql.Driver的JDBC驱动程序实现的名称。例如,要加载my.sql.Driver类,META-INF / services / java.sql.Driver文件将包含以下条目:
my.sql.Driver
应用程序不再需要使用Class.forName()显式加载JDBC驱动程序。当前使用Class.forName()加载JDBC驱动程序的现有程序将继续工作而无需修改。