Play!2.1 通过JPA连接多个数据库

简介:   Play framework连接多数据库很简单。 但是这个很简单耗费了我整整两天的时间来找到这个答案。 还好苍天,我还是找到了。   =============================================================   Play通过Ebean好像可以很方便的链接多数据库,但是我使用的是JPA。

 

Play framework连接多数据库很简单。

但是这个很简单耗费了我整整两天的时间来找到这个答案。

还好苍天,我还是找到了。

 

=============================================================

 

Play通过Ebean好像可以很方便的链接多数据库,但是我使用的是JPA。

所以关于EBEAN是不是能“很方便的”连接多数据库我尽量不发表言论。

 

Hibernate连接数据库的方法据说有两种:

1.注@PersistenceUnit或@PersistenceContext

2.配置JPA.getJPAConfig

完全不知道的可以继续往下看,否则可以跳过这一段。

 

先说想Play JPA中多数据源的配置吧。

 先增加持久化单元:在conf/META-INF的persistence.xml中增加,完后是这样:

<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>DefaultDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        </properties>
    </persistence-unit>
    
    <persistence-unit name="ojdbcPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>OracleDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
        </properties>
    </persistence-unit>

 

然后在application.conf中增加数据源,完后如下:

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:file:E:/work/setup/db/data"
db.default.user=sa
db.default.password=sa
db.default.auth=false
db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit

db.oracle.driver=oracle.jdbc.driver.OracleDriver
db.oracle.url="jdbc:oracle:thin:@10.1.20.65:1521:abc"
db.oracle.user=LOG
db.oracle.password=LOG
db.oracle.jndiName=OracleDS
jpa.oracle=ojdbcPersistenceUnit

 接下来就是痛苦的探索如何进行多数据库访问。

在网上搜索“jpa 多数据源”找到的基本都是和SPRING结合的,没想到JPA已经快成为spring的专属了。。。

 

通过在stackof上提问,得到的答案是刚才提到的两种方法:

http://stackoverflow.com/questions/20416835/playframework2-how-to-open-multi-datasource-configuration-with-jpa

但是这两种方法都不能奏效。可以留意我在问题下面的跟注。

 

http://stackoverflow.com/questions/16611839/play-framework-2-jpa-with-multiple-persistenceunit

http://play.lighthouseapp.com/projects/57987/tickets/706-multiple-databasejpa-support

尤其后来找到这个

http://stackoverflow.com/questions/8001809/jpa-getjpaconfig-method-not-found-on-plays-api

 

幸运的是终于找到了这个

http://stackoverflow.com/questions/10911492/play-framework-2-0-connecting-to-multiple-databases

从问题下面作者的回复看到尽管

jpa.getConfig("sth").em()

 不管事,但是可以用

jpa.em("sth")

 于是改成这样:

JPA.em("default").createQuery(

大功终于告成 。只要为em()指定连接对象即可

 

 

 

 

 

 

 

目录
相关文章
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
120 13
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
943 11
|
8月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
7月前
|
安全 Linux 网络安全
YashanDB数据库服务端SSL连接配置
YashanDB支持通过SSL连接确保数据传输安全,需在服务端生成根证书、服务器证书及DH文件,并将根证书提供给客户端以完成身份验证。服务端配置包括使用OpenSSL工具生成证书、设置SSL参数并重启数据库;客户端则需下载根证书并正确配置环境变量与`yasc_env.ini`文件。注意:启用SSL后,所有客户端必须持有根证书才能连接,且SSL与密码认证独立运行。
|
4月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
421 0
|
7月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1501 28
|
7月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
452 14
|
8月前
|
数据库
【YashanDB知识库】YDC连接数据库报错yasdb return code is zero
【YashanDB知识库】YDC连接数据库报错yasdb return code is zero

热门文章

最新文章