gpt4 book ai didi

java - 没有 WTP 的 Google Cloud SQL + JPA

转载 作者:行者123 更新时间:2023-12-01 09:06:16 25 4
gpt4 key购买 nike

我已成功从 Java 连接到我的 Google Cloud SQL 数据库。目前我一直在通过这样的方式验证这一点:

Connection conn = DriverManager.getConnection(getUrl());

然后从中检索准备好的语句等等。 getUrl() 是一种以 Google 指定的格式返回 url 的方法:“jdbc:google:mysql://xxx/xxx?user=xxx&password=xxx”。

我想在我的数据库中使用 JPA。查看 Google 的文档,他们似乎推荐 WTP,又名 Eclipse Web Tools Platform ( https://developers.google.com/eclipse/docs/cloudsql-jpatools )。我不使用 Eclipse,而且我真的很想避免使用这个工具来完成通常不需要任何 gui/wizard/plugin-thingy 就可以轻松实现的事情。

我的 Java servlet 是用 Spring 编写的,我的应用程序配置如下所示:

@EnableWebMvc
@EnableScheduling
@EnableTransactionManagement
@EnableJpaRepositories("stuff")
@ComponentScan("stuff")
@Configuration
public class AppConfig {

@Bean
public DataSource dataSource() {
DriverManagerDataSource driver = new DriverManagerDataSource();
driver.setDriverClassName("org.postgresql.Driver"); //Obviously not working for Google Cloud SQL
driver.setUrl(Config.getUrl()); // Same url as described above.
driver.setUsername(/*omitted*/);
driver.setPassword(/*omitted*/);
return driver;
}

@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}

@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("stuff");
factory.setPersistenceUnitName("PU");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
}
}

我的 persistence.xml 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>

<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">

<persistence-unit name="PU">
<class>stuff.Message</class>

<properties>
<property name="javax.persistence.jdbc.user" value="root" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
</properties>

</persistence-unit>

</persistence>

有什么方法可以修改我的 AppConfig.java+persistence.xml 使其与 Google Cloud SQL 一起使用吗?如前所述,我希望跳过 Eclipse 插件。

最佳答案

如果您使用 AppEngine,您可能需要阅读 https://cloud.google.com/sql/docs/app-engine-connecthttps://cloud.google.com/appengine/docs/java/cloud-sql/ .

在这里,您似乎正在尝试在不使用 Google Cloud SQL 驱动程序的情况下连接到 Google Cloud SQL 实例,但使用需要此驱动程序的 Google 连接字符串,如示例中所述:

// Load the class that provides the new "jdbc:google:mysql://" prefix.
Class.forName("com.mysql.jdbc.GoogleDriver");

因此您的连接字符串无法识别(并且 PostgreSQL 驱动程序也无济于事)。

如果您不使用 AppEngine,请切换到 MySQL 驱动程序并删除连接字符串中的“google”,就像使用标准 MySQL 连接一样(使用主机、端口等而不是实例名称)。

关于java - 没有 WTP 的 Google Cloud SQL + JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41259732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com