`
somefuture
  • 浏览: 1089831 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Play!2.1 通过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()指定连接对象即可

 

 

 

 

 

 

 

0
0
分享到:
评论
1 楼 AJAVAER 2014-05-20  
好帖,正好用到,Thanks

相关推荐

    JPA连接数据库增删改查

    Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象。它是Java EE和Java SE应用程序中的ORM(对象关系映射)解决方案,允许开发者使用Java对象来操作数据库,从而避免了直接编写SQL...

    SpringBoot整合JPA实现自动创建数据库表自动建表,JPA逆向生成数据库表.zip

    SpringBoot整合JPA实现自动创建数据库表自动建表,JPA逆向生成数据库表 运行环境 jdk8+tomcat9+mysql+IntelliJ IDEA+maven 项目技术(必填) springboot+jpa 数据库文件(可选) 新建一个test的数据库即可,表在...

    JPA连接数据库,非常详细

    这个文件是JPA的配置中心,它定义了持久化单元(Persistence Unit),也就是数据库连接的相关信息。在这个例子中,配置文件内容如下: ```xml &lt;provider&gt;org.apache.openjpa.persistence.PersistenceProviderImpl...

    毕业设计-SpringBoot整合JPA实现自动创建数据库表自动建表,JPA逆向生成数据库表项目源码.zip

    今天整理了一个更加简单的自动建表方式,通过JPA实现 SpringBoot整合JPA实现自动创建数据库表自动建表,JPA逆向生成数据库表 运行环境 jdk8+tomcat9+mysql+IntelliJ IDEA+maven 项目技术(必填) springboot+jpa ...

    JPA整合达梦数据库实例

    有关国产数据库完整的博客太少了,所以就想弄一个完整的专栏给大家提供一些帮助。在现在这种国际形势下,网络安全是每个企业,乃至整个国家重中之重的事,国产化是一种趋势,在整合之前先了解一下达梦数据库。达梦...

    spring boot连接数据库(jpa)

    总结,通过Spring Boot、JPA和Hibernate,我们可以轻松地连接和操作MySQL数据库。配置好YML文件后,利用Spring Data JPA的便捷功能,我们可以快速实现数据的CRUD操作,极大地提高了开发效率。在实际项目中,还可以...

    JPA连接MySql搭建HelloWorld示例代码

    通过这个示例,你可以了解到JPA如何简化与数据库的交互,以及Spring Boot如何轻松地集成这些组件。为了进一步深入,你可以尝试添加更多的实体类、关联关系以及更复杂的查询,从而更好地理解JPA的功能和优势。

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    - **连接池**: 配置合适的连接池,如HikariCP或C3P0,可以有效管理数据库连接,减少资源消耗。 总的来说,`hibernate-jpa-2.1-api-1.0.0.final.jar`为开发者提供了丰富的JPA 2.1特性的实现,使得在Java项目中使用...

    jpa操作mysql数据库

    在“jpa操作mysql数据库”的项目中,我们可以推断出这个工程是使用JPA来连接并操作MySQL数据库的。这通常涉及到以下几个关键点: 1. **配置JPA**:首先,工程中必须包含JPA的依赖库,如Hibernate或EclipseLink等...

    spring data jpa 连接mysql8.x的一些问题梳理总结.docx

    在使用 Spring Data JPA 连接 MySQL 8.x 时,需要在 application.properties 文件中配置数据库连接信息。需要注意四个重要的点: 1. URL 中的数据库名称必须是已经创建的数据库名称。 2. 需要配置时区, MySQL 8.x ...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    Spring Boot+Jpa多数据源配置Demo(支持不同数据库)

    首先,我们需要在`application.yml`或`application.properties`文件中定义各自的数据库连接信息,例如: ```yaml # application.yml spring: datasource: primary: url: jdbc:mysql://localhost:3306/main_db ...

    websphere8.5配置jpa2.1

    在IBM Websphere 8.5环境中配置JPA 2.1的支持,主要是因为该版本默认仅支持JPA 2.0,而某些项目可能需要使用JPA 2.1提供的新特性和功能。以下是一步步指导如何进行配置: 1. **修改Hibernate配置文件**: 在项目的...

    JPA图书管理(连接数据库)

    数据库连接配置通常在`persistence.xml`文件中进行,包括数据源、JPA供应商、实体类等信息。项目中的业务逻辑会围绕`EntityManager`实例进行,例如,添加新图书、查找特定图书、更新图书信息或删除图书。 总的来说...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    JPA_由数据库生成JavaBean

    2. **配置JPA和数据库连接**: - 在项目中,右键点击`src/main/resources`目录,选择`New &gt; Other &gt; JPA &gt; Persistence Unit`来创建一个新的持久化单元(Persistence Unit)。这里需要填写数据库的相关信息,如JDBC...

    spring boot项目中使用Jpa对mySql数据库进行CURD操作

    然后,在`application.properties`或`application.yml`中配置数据库连接信息: ```properties # application.properties 示例 spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTime...

    JPA小程序实现数据库增删改查

    JPA 是Java平台上的一个标准,它提供了一种面向对象的方式来处理关系数据库,使得开发者可以避免直接编写SQL语句,提高了代码的可读性和可维护性。 首先,我们要了解JPA的基本概念。JPA通过ORM(对象关系映射)将...

    play+spring+jpa

    2. `Application.conf`:Play框架的配置文件,可能包含了数据库连接信息和其他设置。 3. ` controllers`目录:包含Play的控制器,处理HTTP请求并调用服务层方法。 4. `models`目录:可能包含JPA实体类,这些类对应于...

    EJB_JPA数据库持久层开发详解

    例如,定义一个用户实体(User),并在数据库中创建相应的表,然后通过JPA注解配置实体和字段的映射关系。 #### JPA开发工具 为了提高开发效率,可以利用Eclipse Dali JPA插件,它提供了图形化的界面来创建和管理...

Global site tag (gtag.js) - Google Analytics