嗨,大家好,我可以通過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