嗨,大家好,我可以通过Eclipse数据库开发连接Derby,但是我无法通过Hibernate将Derby与Eclipse数据库开发的相同URL连接起来。 错误:“产生的原因:java.sql.SQLException中:德比的另一个实例可能已经启动数据库”如何在休眠时使用Java DB(名为Derby)
回答
几天前,刚刚完成了一个项目,使用了Derby和Hibernate。 (使用同一个JVM运行Derby)
据我所知,当你使用嵌入式驱动程序时,它默认启动数据库实例作为驱动程序的一部分,只要你挂上连接数据库运行。但对于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以创建自己的池数据源。
看来,如果你正在运行德比为embedded DB,而不是一个数据库服务器。
的问题是两者都在 不同的JVM上运行,并给定的数据库 只能从一个JVM访问。
当你开始测试你的程序并且不允许在eclipse中使用嵌入数据库时,Eclipse将启动另一个JVM。我认为how to use Derby as a network DB Server可以帮助你。
另一种方法是在运行代码之前从工具中的数据库断开连接 - 通过“数据源浏览器”视图。 – McDowell 2009-10-05 13:25:46
- 1. 如何在java中添加用户名和密码db(derby)
- 2. 用java休眠
- 3. 休眠时使用休眠时未知的实体5 java 8
- 4. Java DB/Apache Derby与Android
- 5. 春天休眠,由DB
- 6. 休眠和db触发
- 7. 如何在休眠中使用@Qualifier
- 8. 使用休眠时StringIndexOutOfBoundsException
- 9. 休眠,别名
- 10. 如何在休眠
- 11. Java休眠PropertyAccessException
- 12. 如何使用包含在休眠中
- 13. 如何在MS Access中使用休眠?
- 14. 一级休眠缓存,直接在DB
- 15. Java日期休眠中断时间
- 16. 在休眠中使用JTable
- 17. 如何在休眠时删除数据时使用外键
- 18. 如何在使用休眠时设计数据字典表?
- 19. 备份Derby DB Groovy脚本
- 20. 手动插入时使用休眠@GeneratedValue
- 21. 为了在休眠
- 22. 如何在休眠时解密密码
- 23. 在休眠中使用DBDeploy作为ORM
- 24. GWT和休眠 - 使用休眠时的NoClassDefFoundError
- 25. 在通过休眠从DB检索的类中使用Spring Bean
- 26. 的Java春/休眠:使用criteria.list NullpointException()
- 27. 如何使用休眠进行连接
- 28. SQlite在java中有休眠
- 29. 使用休眠命名传递
- 30. 休眠使用别名与标准
答:不要!德比是一个缓慢,不灵活,功能最少的DBMS。相反,使用H2 DBMS或HSQL ...或基本上其他任何东西。 – BobMcGee 2010-03-02 14:12:01