Java에서 Google Cloud SQL 데이터베이스에 연결할 수있었습니다. 현재 다음과 같이 확인했습니다.Google Cloud SQL + JPA (WTP 제외)
Connection conn = DriverManager.getConnection(getUrl());
그런 다음 준비된 문을 검색하는 등의 작업을 수행했습니다. getUrl()은 Google이 지정하는 형식으로 url을 반환하는 메소드입니다. "jdbc : google : mysql : // xxx/xxx? user = xxx & password = xxx".
데이터베이스와 함께 JPA를 사용하고 싶습니다. 이를 위해 Google의 문서를 보면 WTP a.k.a.Eclipse Web Tools Platform (https://developers.google.com/eclipse/docs/cloudsql-jpatools)을 권장하는 것으로 보입니다. 나는 이클립스를 사용하지 않고 어떤 gui/wizard/plugin-thing 없이도이 도구를 사용하여 일반적으로 쉽게 달성 할 수있는 일을 피하고 싶다.
내 자바 서블릿은 봄에 기록되고 내 응용 프로그램의 설정은 다음과 같이 보입니다 :이 같은
@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>
어떤 방법이 있다는 것을 I 내 AppConfig.java + persistence.xml을 수정하여 Google Cloud SQL에서이 작업을 수행 할 수 있습니까? 언급했듯이 이클립스 플러그인을 건너 뛰고 싶다.
특정 구성없이 작동해야하며 Google Cloud SQL을 사용하여 현재 구성을 테스트 했습니까? 어떤 오류가 있었습니까? –
mvn appengine : deploy를 사용하여 배포합니다. 그 후 Java에서 sql을 사용하여 데이터를 저장하는 나머지 서비스를 호출 해보십시오. 정상적으로 작동합니다. 그 후에 entitymanager를 사용하는 휴식 서비스를 호출하여 "HibernateException : JDBC 연결을 만들 수 없습니다"라는 결과를 보게됩니다. 똑같은 연결 고리. –