如何在休眠状态下使用Java DB(名为Derby)
作者:互联网
大家好,我可以通过Eclipse数据库开发连接Derby,但是我不能通过Hibernate将具有相同URL的Derby与Eclipse数据库开发连接.
错误:“引起原因:java.sql.SQLException:Derby的另一个实例可能已经启动了数据库”
解决方法:
几天前,刚刚完成了一个使用Hibernate和Derby的项目. (Derby在同一JVM中运行.)
据我了解,当您使用嵌入式驱动程序时,默认情况下它将作为驱动程序的一部分启动数据库实例,只要您挂在数据库正在运行的连接上即可.但是对于Hibernate,它喜欢给它一个DataSource,它实际上应该是一个池数据源.
上面的答案是正确的,即使您使用相同的JVM,将Derby作为Network DB Server启动也是一个好主意.您仍然可以使用嵌入式JDBC驱动程序,该驱动程序似乎知道您要连接的数据库何时处于网络模式并进行相应调整. (这还允许使用第三方工具连接到数据库,并在运行时查看和编辑数据和架构,非常便于调试.)
System.setProperty("derby.system.home", applicationHome);
NetworkServerControl serverControl = new NetworkServerControl(InetAddress.getByName(m_address),port);
serverControl.start(new PrintWriter(System.out, true));
数据库运行后,您可以将DataSource实例粘贴在JNDI注册表中.然后,Hibernate可以从JNDI注册中心访问此数据源(给定名称).
EmbeddedConnectionPoolDataSource40 dataSource = new EmbeddedConnectionPoolDataSource40();
dataSource.setDatabaseName(databaseName);
dataSource.setUser(username);
dataSource.setPassword(password);
EmbeddedConnectionPoolDataSource40是与池化DataSource包装器一起使用的DataSource实现,因此可以在可能的地方重用连接.我使用了Apache Commons DBCP,并使用EmbeddedConnectionPoolDataSource40修改了examples之一来创建自己的池化数据源.
标签:jdbc,derby,java 来源: https://codeday.me/bug/20191107/2002728.html