2014-02-23 46 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评论。