2014-02-23 80 views
1

我正在構建一個play應用程序,並且希望配置Apache Jena TDB,但是我也在此數據庫和postgresql中的關係數據庫之間交換。我有postgresql數據庫配置正確。這是一個兩部分問題:Apache Jena的Play Framework 2配置TDB

  1. 什麼是配置兩個數據庫的最佳方式,將交替使用,而不是同時使用。看起來在第二場比賽中有兩個常規選項,我可以在不同的服務器上配置數據庫(看起來像是同時運行數據庫的最佳選擇)。或者我傾向於在數據庫配置下配置兩個數據庫,然後將全局對象設置爲我想要使用的數據庫,並在模型中使用if-else語句來確定要使用哪個數據集。任何關於哪個設計可能更好地用於在兩個數據庫之間交換的建議?

  2. 我需要爲我的TDB配置使用什麼驅動程序?我想:

    db.tdb.driver=org.apache.jena.jena-jdbc-driver-tdb 
    db.tdb.url="jdbc:jena:tdb:location=/localhost/application" 
    db.tdb.user=tdb 
    db.tdb.password=password 
    

然而,玩不承認這個驅動程序。有誰知道什麼驅動程序適合玩遊戲?我正在使用耶拿2.10.2。任何建議將有所幫助,謝謝!

布拉德

+0

你可以查看https://github.com/mhgrove/Imperium,這是一個Play! 1插件,但它的目的是讓使用Sesame或Jena作爲遊戲的數據庫變得容易!應用。 – Michael

+0

謝謝你的鏈接!這將是下一步,將查詢結果轉換爲Java對象。但是,首先我需要連接數據庫。 – bmoran

+0

這不是查詢結果,它是一個ORM,或者更具體地說是一個Object-Triple Mapper。如果您熟悉JPA,那麼它將實現JPA接口以將bean綁定到三重存儲 – Michael

回答

0

我不能回答第1部分不知道播放框架,但作爲耶拿JDBC組件上的主要開發者,我可以在部分採取刺傷2個

連接設置你看咯錯,從他們的documentation一個示例如下:

# Default database configuration 
db.default.driver=org.h2.Driver 
db.default.url=jdbc:h2:mem:play 

所以看起來你想要的驅動程序並不像你似乎已經習慣了這樣TDB配置應該大致像下面的JAR名的類名:

db.tdb.driver=org.apache.jena.jdbc.tdb.TDBDriver 
db.tdb.url=jdbc:jena:tdb:location=/localhost/application 

而且不應該提供用戶名/密碼。

另請注意,如Connecting with JDBC文檔中所述,您需要在Managing Library Dependencies文檔之後將TDB驅動程序JAR作爲附加依賴項添加到您的應用程序中。

如果仍然無法成功連接,那麼這可能會導致已知錯誤JENA-646,Jena JDBC目前不公開JDBC驅動程序的適當元信息,因此如果Play依賴於這可能無法以某種方式首先初始化類。您可以在您的代碼中撥打TDBDriver.register()或利用jdbc.drivers系統屬性,詳情請參閱JENA-646評論。