是否可以将JPA连接池与Google App Engine和Cloud SQL一起使用?

时间:2014-03-26 15:16:32

标签: java mysql google-app-engine jpa google-cloud-sql

(注意:是的,围绕这个主题有一些重复的问题。但是,那些点上的问题已经存在几年......当Google App Engine仅支持JPA 1.0和专有的NoSQL时数据存储。现在值得重新访问,支持更现代的JPA标准和MySQL。)

我正在使用JPA作为持久性框架在Google App Engine Java项目中试验Cloud SQL。谷歌的常见问题解答在使用与云端SQL的连接池时有些矛盾......如果创建新连接的成本超过检查和重用现有连接的成本,那么这可能是值得的。

我预计我的应用程序将迅速发布大量非常短暂的数据库操作,因此它似乎适合连接池的用例。此外,我是** FAR **更担心由于配额上限而拒绝我的连接,而不是我在一个等待连接池释放的请求阻止几秒钟。根据以前使用Google App Engine运行时配额的经验,我甚至不认为Cloud SQL是一种可行的服务而没有连接池。

问题是JPA通常通过JNDI连接到连接池,而Google App Engine不支持JNDI 。那么人们如何使用与Google App Engine和Cloud SQL的连接池?有没有办法以编程方式将连接池连接到JPA EntityManagerFactory,而没有JNDI?或者您是否必须放弃JPA,并使用手动JDBC或其他一些持久性框架(例如JDO)编写持久层?

就重要而言,我目前正在尝试使用EclipseLink作为JPA提供程序,使用Tomcat DBCP作为连接池(我在other StackOverflow questions中看到Tomcat DBCP与App Engine的线程一起使用限制)。我愿意探索其他提供者或持久性机制(例如本机Hibernate,JDO等)......但我更愿意坚持使用JPA标准,并且如果它需要纯手工JDBC来处理连接,那么它可能会完全传递Cloud SQL池。

1 个答案:

答案 0 :(得分:1)

我可以看到这是一个老问题,但是如果有人最终在这里寻找答案,我在App Engine上使用Spring和Apache BasicDataSource使用Cloud SQL,它运行得很好。