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

Ste*_*ins 8 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.关于在Cloud SQL中使用连接池,Google的常见问题解答有点矛盾......如果创建新连接的成本超过检查和重用现有连接的成本,那么这可能是值得的.

我预计我的应用程序将迅速发布大量非常短暂的数据库操作,因此它似乎适合连接池的用例.此外,我是**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作为连接池(我在其他StackOverflow问题中已经看到Tomcat DBCP与App Engine的线程限制一起使用).我愿意探索其他提供者或持久性机制(例如本机Hibernate,JDO等)......但我更愿意坚持使用JPA标准,并且如果它需要纯手工JDBC来处理连接,那么它可能会完全传递Cloud SQL池.

tan*_*ent 1

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