嗨,大家好,我可以通過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. 在運行時使用休眠設置bootPassword爲derby數據庫
- 2. 如何在java中添加用戶名和密碼db(derby)
- 3. 用java休眠
- 4. 休眠時使用休眠時未知的實體5 java 8
- 5. Spring with embedded derby:休眠方言棄用
- 6. 休眠/ JPA無DB
- 7. Java的單表繼承在DB結構中使用JPA /休眠
- 8. 使用休眠和tapestry JAVA
- 9. Java DB/Apache Derby與Android
- 10. 將derby DB連接到Java
- 11. 如何修復Java中的數據庫問題(使用DERBY DB)?
- 12. 爲什麼ResponseEntity在休眠加載時調用休眠
- 13. 休眠SaveOrUpdate:如何使用
- 14. 休眠和db觸發
- 15. DB約束違反休眠
- 16. 春天休眠,由DB
- 17. 如何在休眠中使用@Qualifier
- 18. 如何休眠
- 19. 使用休眠時StringIndexOutOfBoundsException
- 20. 使用休眠時出錯
- 21. 如何在休眠
- 22. 使用休眠作爲庫
- 23. 休眠,別名
- 24. Java休眠org.hibernate.annotations.Index
- 25. 休眠和Java
- 26. Java休眠PropertyAccessException
- 27. 休眠:重用休眠類
- 28. 如何使用包含在休眠中
- 29. 如何使用GROUP_CONCAT在休眠+春
- 30. 如何在MS Access中使用休眠?
答:不要!德比是一個緩慢,不靈活,功能最少的DBMS。相反,使用H2 DBMS或HSQL ...或基本上其他任何東西。 – BobMcGee 2010-03-02 14:12:01