diff --git a/README.md b/README.md
index a94cec0..27994cb 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,10 @@ This project generates a .jar with a couple of Spring Data repositories and asso
I have had trouble getting this structure to work, so this project is intended to simplify
things as much as possible to establish how best to do it.
+The project is configured to *not* create the schema or tables. It assumes that:
+* You have a MySQL instance. Modify the connection settings in `config/application.yml` as appropriate.
+* You have two schemas in your database and tables, as can be set up using `db/schema.sql`.
+
It's built with Maven, so from the command line you can run a full build (including tests):
mvn clean install
-
diff --git a/config/application.yml b/config/application.yml
new file mode 100644
index 0000000..f5374ab
--- /dev/null
+++ b/config/application.yml
@@ -0,0 +1,33 @@
+logging:
+ level: INFO
+
+spring:
+ datasource:
+ url: jdbc:mysql://localhost/foo_schema
+ username: root
+ password: d4t4b4s3sForLif3
+ driverClassName: com.mysql.jdbc.Driver
+ test-on-borrow: true
+ test-while-idle: true
+ validation-query: select 1;
+ maxActive: 1
+ jpa:
+ show-sql: false
+ generate-ddl: false
+ properties:
+ hibernate:
+ dialect: org.hibernate.dialect.MySQL5InnoDBDialect
+ ddl-auto: validate
+ hbm2ddl:
+ import_files:
+
+bar:
+ datasource:
+ url: jdbc:mysql://localhost/bar_schema
+ username: root
+ password: d4t4b4s3sForLif3
+ driverClassName: com.mysql.jdbc.Driver
+ test-on-borrow: true
+ test-while-idle: true
+ validation-query: select 1;
+ maxActive: 1
diff --git a/db/schema.sql b/db/schema.sql
new file mode 100644
index 0000000..218ef73
--- /dev/null
+++ b/db/schema.sql
@@ -0,0 +1,17 @@
+DROP SCHEMA IF EXISTS `foo_schema`;
+CREATE SCHEMA `foo_schema` DEFAULT CHARACTER SET utf8 ;
+USE `foo_schema`;
+CREATE TABLE foo (
+ ID bigint NOT NULL AUTO_INCREMENT,
+ Name varchar(5),
+ PRIMARY KEY (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP SCHEMA IF EXISTS `bar_schema`;
+CREATE SCHEMA `bar_schema` DEFAULT CHARACTER SET utf8 ;
+USE `bar_schema`;
+CREATE TABLE bar (
+ ID bigint NOT NULL AUTO_INCREMENT,
+ Name varchar(5),
+ PRIMARY KEY (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/pom.xml b/pom.xml
index 2b09dc1..b621fc1 100755
--- a/pom.xml
+++ b/pom.xml
@@ -6,233 +6,56 @@
com.sctrcd
multids-demo
- 1.0.0-SNAPSHOT
- Spring-data multiple datasource demo
+ 2.0.0-SNAPSHOT
+ Multiple data sources with Spring Boot and SpringData JPA
jar
-
A application demonstrating how to use Spring Data repositories with multiple datasources.
-
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.3.1.RELEASE
+
+
+
- 1.7
+ 1.8
UTF-8
- 3.2.5.RELEASE
+ UTF-8
-
-
- Version99
- Version 99 Does Not Exist Maven repository
-
- default
- http://version99.qos.ch/
-
-
-
-
-
-
- org.slf4j
- slf4j-api
- 1.6.4
-
-
- commons-logging
- commons-logging
- 99-empty
-
-
- org.slf4j
- slf4j-log4j12
- 1.6.4
-
-
- org.slf4j
- jcl-over-slf4j
- 1.6.4
-
-
- log4j
- log4j
- 1.2.16
-
-
-
-
-
-
-
- org.springframework
- spring-context-support
- ${org.springframework.version}
-
-
-
- org.springframework.data
- spring-data-jpa
- 1.4.2.RELEASE
-
-
-
-
- org.springframework
- spring-orm
- ${org.springframework.version}
-
-
-
-
- org.springframework
- spring-oxm
- ${org.springframework.version}
-
-
-
-
- org.springframework
- spring-webmvc
- ${org.springframework.version}
-
-
- org.springframework
- spring-web
- ${org.springframework.version}
-
-
-
-
- org.springframework
- spring-test
- ${org.springframework.version}
- test
-
-
-
- org.hibernate
- hibernate-core
- 4.0.1.Final
-
-
- org.hibernate
- hibernate-entitymanager
- 4.0.1.Final
-
-
- org.hibernate
- hibernate-commons-annotations
- 3.2.0.Final
-
-
- org.hibernate.javax.persistence
- hibernate-jpa-2.0-api
- 1.0.1.Final
-
-
-
- javax.validation
- validation-api
- 1.0.0.GA
+ org.springframework.boot
+ spring-boot-starter-data-jpa
- org.hibernate
- hibernate-validator
- 4.2.0.Final
+ mysql
+ mysql-connector-java
- org.hibernate
- hibernate-ehcache
- 4.0.0.Final
-
-
-
- org.hsqldb
- hsqldb
- 2.2.9
-
-
-
- cglib
- cglib-nodep
- 2.2.2
-
-
-
- commons-dbcp
- commons-dbcp
- 1.4
-
-
- commons-beanutils
- commons-beanutils
- 1.8.3
-
-
-
- org.slf4j
- slf4j-api
- 1.6.4
-
-
- commons-logging
- commons-logging
- 99-empty
-
-
- org.slf4j
- slf4j-log4j12
- 1.6.4
-
-
- org.slf4j
- jcl-over-slf4j
- 1.6.4
-
-
- log4j
- log4j
- 1.2.16
-
-
-
- junit
- junit
- 4.8.1
-
+ org.projectlombok
+ lombok
+ 1.16.6
provided
- org.hamcrest
- hamcrest-all
- 1.1
+ org.springframework.boot
+ spring-boot-starter-test
test
-
- org.mockito
- mockito-all
- 1.8.4
- test
-
-
-
-
- src/main/resources
-
-
+
+ org.apache.maven.plugins
+ maven-eclipse-plugin
+
+ true
+ true
+
+
maven-compiler-plugin
2.3.2
@@ -241,6 +64,10 @@
${java.version}
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
diff --git a/src/main/java/com/sctrcd/multidsdemo/BarConfig.java b/src/main/java/com/sctrcd/multidsdemo/BarConfig.java
new file mode 100644
index 0000000..4cf12e6
--- /dev/null
+++ b/src/main/java/com/sctrcd/multidsdemo/BarConfig.java
@@ -0,0 +1,49 @@
+package com.sctrcd.multidsdemo;
+
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@Configuration
+@EnableTransactionManagement
+@EnableJpaRepositories(
+ entityManagerFactoryRef = "barEntityManagerFactory",
+ transactionManagerRef = "barTransactionManager",
+ basePackages = { "com.sctrcd.multidsdemo.bar.repo" })
+public class BarConfig {
+
+ @Bean(name = "barDataSource")
+ @ConfigurationProperties(prefix="bar.datasource")
+ public DataSource barDataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean(name = "barEntityManagerFactory")
+ public LocalContainerEntityManagerFactoryBean barEntityManagerFactory(
+ EntityManagerFactoryBuilder builder,
+ @Qualifier("barDataSource") DataSource barDataSource) {
+ return builder
+ .dataSource(barDataSource)
+ .packages("com.sctrcd.multidsdemo.bar.domain")
+ .persistenceUnit("bar")
+ .build();
+ }
+
+ @Bean(name = "barTransactionManager")
+ public PlatformTransactionManager barTransactionManager(
+ @Qualifier("barEntityManagerFactory") EntityManagerFactory barEntityManagerFactory) {
+ return new JpaTransactionManager(barEntityManagerFactory);
+ }
+
+}
diff --git a/src/main/java/com/sctrcd/multidsdemo/FooConfig.java b/src/main/java/com/sctrcd/multidsdemo/FooConfig.java
new file mode 100644
index 0000000..d05802e
--- /dev/null
+++ b/src/main/java/com/sctrcd/multidsdemo/FooConfig.java
@@ -0,0 +1,52 @@
+package com.sctrcd.multidsdemo;
+
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@Configuration
+@EnableTransactionManagement
+@EnableJpaRepositories(
+ entityManagerFactoryRef = "entityManagerFactory",
+ basePackages = { "com.sctrcd.multidsdemo.foo.repo" })
+public class FooConfig {
+
+ @Primary
+ @Bean(name = "dataSource")
+ @ConfigurationProperties(prefix="spring.datasource")
+ public DataSource dataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Primary
+ @Bean(name = "entityManagerFactory")
+ public LocalContainerEntityManagerFactoryBean entityManagerFactory(
+ EntityManagerFactoryBuilder builder,
+ @Qualifier("dataSource") DataSource dataSource) {
+ return builder
+ .dataSource(dataSource)
+ .packages("com.sctrcd.multidsdemo.foo.domain")
+ .persistenceUnit("foo")
+ .build();
+ }
+
+ @Primary
+ @Bean(name = "transactionManager")
+ public PlatformTransactionManager transactionManager(
+ @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
+ return new JpaTransactionManager(entityManagerFactory);
+ }
+
+}
diff --git a/src/main/java/com/sctrcd/multidsdemo/MultiDsApplication.java b/src/main/java/com/sctrcd/multidsdemo/MultiDsApplication.java
new file mode 100644
index 0000000..bc3fff3
--- /dev/null
+++ b/src/main/java/com/sctrcd/multidsdemo/MultiDsApplication.java
@@ -0,0 +1,13 @@
+package com.sctrcd.multidsdemo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MultiDsApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MultiDsApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/com/sctrcd/multidsdemo/bar/domain/Bar.java b/src/main/java/com/sctrcd/multidsdemo/bar/domain/Bar.java
new file mode 100644
index 0000000..788dfd4
--- /dev/null
+++ b/src/main/java/com/sctrcd/multidsdemo/bar/domain/Bar.java
@@ -0,0 +1,29 @@
+package com.sctrcd.multidsdemo.bar.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Entity
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+public class Bar {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column
+ private Long id;
+
+ @Column
+ private String name;
+
+}
diff --git a/src/main/java/com/sctrcd/multidsdemo/integration/repositories/bar/BarRepository.java b/src/main/java/com/sctrcd/multidsdemo/bar/repo/BarRepository.java
similarity index 55%
rename from src/main/java/com/sctrcd/multidsdemo/integration/repositories/bar/BarRepository.java
rename to src/main/java/com/sctrcd/multidsdemo/bar/repo/BarRepository.java
index bbc97b7..689f0db 100644
--- a/src/main/java/com/sctrcd/multidsdemo/integration/repositories/bar/BarRepository.java
+++ b/src/main/java/com/sctrcd/multidsdemo/bar/repo/BarRepository.java
@@ -1,8 +1,8 @@
-package com.sctrcd.multidsdemo.integration.repositories.bar;
+package com.sctrcd.multidsdemo.bar.repo;
import org.springframework.data.jpa.repository.JpaRepository;
-import com.sctrcd.multidsdemo.domain.bar.Bar;
+import com.sctrcd.multidsdemo.bar.domain.Bar;
public interface BarRepository extends JpaRepository {
diff --git a/src/main/java/com/sctrcd/multidsdemo/domain/bar/Bar.java b/src/main/java/com/sctrcd/multidsdemo/domain/bar/Bar.java
deleted file mode 100644
index 81337d0..0000000
--- a/src/main/java/com/sctrcd/multidsdemo/domain/bar/Bar.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.sctrcd.multidsdemo.domain.bar;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Bar {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Column
- private Long id;
-
- @Column
- private String name;
-
- public Bar() {
- }
-
- public Bar(String name) {
- this.name = name;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
-}
diff --git a/src/main/java/com/sctrcd/multidsdemo/domain/foo/Foo.java b/src/main/java/com/sctrcd/multidsdemo/domain/foo/Foo.java
deleted file mode 100644
index 4644aca..0000000
--- a/src/main/java/com/sctrcd/multidsdemo/domain/foo/Foo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.sctrcd.multidsdemo.domain.foo;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Foo {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Column
- private Long id;
-
- @Column
- private String name;
-
- public Foo() {
- }
-
- public Foo(String name) {
- this.name = name;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
-}
diff --git a/src/main/java/com/sctrcd/multidsdemo/foo/domain/Foo.java b/src/main/java/com/sctrcd/multidsdemo/foo/domain/Foo.java
new file mode 100644
index 0000000..d13a323
--- /dev/null
+++ b/src/main/java/com/sctrcd/multidsdemo/foo/domain/Foo.java
@@ -0,0 +1,29 @@
+package com.sctrcd.multidsdemo.foo.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Entity
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+public class Foo {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column
+ private Long id;
+
+ @Column
+ private String name;
+
+}
diff --git a/src/main/java/com/sctrcd/multidsdemo/integration/repositories/foo/FooRepository.java b/src/main/java/com/sctrcd/multidsdemo/foo/repo/FooRepository.java
similarity index 55%
rename from src/main/java/com/sctrcd/multidsdemo/integration/repositories/foo/FooRepository.java
rename to src/main/java/com/sctrcd/multidsdemo/foo/repo/FooRepository.java
index f2689ff..7538214 100644
--- a/src/main/java/com/sctrcd/multidsdemo/integration/repositories/foo/FooRepository.java
+++ b/src/main/java/com/sctrcd/multidsdemo/foo/repo/FooRepository.java
@@ -1,8 +1,8 @@
-package com.sctrcd.multidsdemo.integration.repositories.foo;
+package com.sctrcd.multidsdemo.foo.repo;
import org.springframework.data.jpa.repository.JpaRepository;
-import com.sctrcd.multidsdemo.domain.foo.Foo;
+import com.sctrcd.multidsdemo.foo.domain.Foo;
public interface FooRepository extends JpaRepository {
diff --git a/src/main/java/com/sctrcd/multidsdemo/integration/config/AppConfig.java b/src/main/java/com/sctrcd/multidsdemo/integration/config/AppConfig.java
deleted file mode 100644
index 9547c01..0000000
--- a/src/main/java/com/sctrcd/multidsdemo/integration/config/AppConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.sctrcd.multidsdemo.integration.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.orm.hibernate4.HibernateExceptionTranslator;
-import org.springframework.orm.jpa.JpaVendorAdapter;
-import org.springframework.orm.jpa.vendor.Database;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-
-@Configuration
-@ComponentScan(basePackages = { "com.sctrcd.multidsdemo" })
-public class AppConfig {
-
- /**
- * Primary because if we have activated embedded databases, we do not want
- * the application to connect to an external database.
- */
- @Bean
- public JpaVendorAdapter jpaVendorAdapter() {
- HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
- jpaVendorAdapter.setShowSql(true);
- jpaVendorAdapter.setGenerateDdl(true);
- jpaVendorAdapter.setDatabase(Database.HSQL);
- return jpaVendorAdapter;
- }
-
- @Bean
- public HibernateExceptionTranslator hibernateExceptionTranslator() {
- return new HibernateExceptionTranslator();
- }
-
-}
diff --git a/src/main/java/com/sctrcd/multidsdemo/integration/config/bar/BarConfig.java b/src/main/java/com/sctrcd/multidsdemo/integration/config/bar/BarConfig.java
deleted file mode 100644
index c905158..0000000
--- a/src/main/java/com/sctrcd/multidsdemo/integration/config/bar/BarConfig.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.sctrcd.multidsdemo.integration.config.bar;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
-import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.JpaVendorAdapter;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(
- entityManagerFactoryRef = "barEntityManagerFactory",
- transactionManagerRef = "barTransactionManager",
- basePackages = { "com.sctrcd.multidsdemo.integration.repositories.bar" })
-public class BarConfig {
-
- @Autowired
- JpaVendorAdapter jpaVendorAdapter;
-
- /**
- * Primary because if we have activated embedded databases, we do not want
- * the application to connect to an external database.
- */
- @Bean(name = "barDataSource")
- public DataSource dataSource() {
- return new EmbeddedDatabaseBuilder()
- .setName("bardb")
- .setType(EmbeddedDatabaseType.HSQL)
- .build();
- }
-
- @Bean(name = "barEntityManager")
- public EntityManager entityManager() {
- return entityManagerFactory().createEntityManager();
- }
-
- @Bean(name = "barEntityManagerFactory")
- public EntityManagerFactory entityManagerFactory() {
- LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
- lef.setDataSource(dataSource());
- lef.setJpaVendorAdapter(jpaVendorAdapter);
- lef.setPackagesToScan("com.sctrcd.multidsdemo.domain.bar");
- lef.setPersistenceUnitName("barPersistenceUnit");
- lef.afterPropertiesSet();
- return lef.getObject();
- }
-
- @Bean(name = "barTransactionManager")
- public PlatformTransactionManager transactionManager() {
- return new JpaTransactionManager(entityManagerFactory());
- }
-
-}
diff --git a/src/main/java/com/sctrcd/multidsdemo/integration/config/foo/FooConfig.java b/src/main/java/com/sctrcd/multidsdemo/integration/config/foo/FooConfig.java
deleted file mode 100644
index 23f2315..0000000
--- a/src/main/java/com/sctrcd/multidsdemo/integration/config/foo/FooConfig.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.sctrcd.multidsdemo.integration.config.foo;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
-import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.JpaVendorAdapter;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(
- entityManagerFactoryRef = "fooEntityManagerFactory",
- transactionManagerRef = "fooTransactionManager",
- basePackages = {"com.sctrcd.multidsdemo.integration.repositories.foo"})
-public class FooConfig {
-
- @Autowired
- JpaVendorAdapter jpaVendorAdapter;
-
- /**
- * Primary because if we have activated embedded databases, we do not want
- * the application to connect to an external database.
- */
- @Bean(name = "fooDataSource")
- public DataSource dataSource() {
- return new EmbeddedDatabaseBuilder()
- .setName("foodb")
- .setType(EmbeddedDatabaseType.HSQL)
- .build();
- }
-
- @Bean(name = "fooEntityManager")
- public EntityManager entityManager() {
- return entityManagerFactory().createEntityManager();
- }
-
- @Bean(name = "fooEntityManagerFactory")
- public EntityManagerFactory entityManagerFactory() {
- LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
- lef.setDataSource(dataSource());
- lef.setJpaVendorAdapter(jpaVendorAdapter);
- lef.setPackagesToScan("com.sctrcd.multidsdemo.domain.foo");
- lef.setPersistenceUnitName("fooPersistenceUnit");
- lef.afterPropertiesSet();
- return lef.getObject();
- }
-
- @Bean(name = "fooTransactionManager")
- public PlatformTransactionManager transactionManager() {
- return new JpaTransactionManager(entityManagerFactory());
- }
-
-}
diff --git a/src/test/java/com/sctrcd/multidsdemo/RepositoryTest.java b/src/test/java/com/sctrcd/multidsdemo/RepositoryTest.java
new file mode 100644
index 0000000..886b91c
--- /dev/null
+++ b/src/test/java/com/sctrcd/multidsdemo/RepositoryTest.java
@@ -0,0 +1,60 @@
+package com.sctrcd.multidsdemo;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.SpringApplicationConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.sctrcd.multidsdemo.bar.domain.Bar;
+import com.sctrcd.multidsdemo.bar.repo.BarRepository;
+import com.sctrcd.multidsdemo.foo.domain.Foo;
+import com.sctrcd.multidsdemo.foo.repo.FooRepository;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringApplicationConfiguration(classes = MultiDsApplication.class)
+public class RepositoryTest {
+
+ private static Logger log = LoggerFactory.getLogger(RepositoryTest.class);
+
+ @Autowired
+ private FooRepository fooRepo;
+
+ @Autowired
+ private BarRepository barRepo;
+
+ @Test
+ public void shouldSaveFoo() {
+ int countBefore = fooRepo.findAll().size();
+ try {
+ Foo foo = new Foo();
+ foo.setName("foo");
+ fooRepo.saveAndFlush(foo);
+ } catch (Exception e) {
+ log.error("Error saving Foo.", e);
+ throw e;
+ }
+ int countAfter = fooRepo.findAll().size();
+ assertEquals(1, countAfter - countBefore);
+ }
+
+ @Test
+ public void shouldSaveBar() {
+ int countBefore = barRepo.findAll().size();
+ try {
+ Bar bar = new Bar();
+ bar.setName("bar");
+ barRepo.saveAndFlush(bar);
+ } catch (Exception e) {
+ log.error("Error saving Bar.", e);
+ throw e;
+ }
+ int countAfter = barRepo.findAll().size();
+ assertEquals(1, countAfter - countBefore);
+ }
+
+}
diff --git a/src/test/java/com/sctrcd/multidsdemo/integration/repositories/bar/BarRepositoryTest.java b/src/test/java/com/sctrcd/multidsdemo/integration/repositories/bar/BarRepositoryTest.java
deleted file mode 100644
index ff79293..0000000
--- a/src/test/java/com/sctrcd/multidsdemo/integration/repositories/bar/BarRepositoryTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.sctrcd.multidsdemo.integration.repositories.bar;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.support.AnnotationConfigContextLoader;
-
-import com.sctrcd.multidsdemo.domain.bar.Bar;
-import com.sctrcd.multidsdemo.integration.config.AppConfig;
-import com.sctrcd.multidsdemo.integration.repositories.bar.BarRepository;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
-public class BarRepositoryTest {
-
- private static Logger log = LoggerFactory.getLogger(BarRepositoryTest.class);
-
- @Autowired
- BarRepository barRepo;
-
- @Test
- public void test() {
- try {
- Bar bar = new Bar("bar");
- barRepo.saveAndFlush(bar);
- } catch (Exception e) {
- log.error("Error saving Bar.", e);
- throw e;
- }
- }
-
-}
diff --git a/src/test/java/com/sctrcd/multidsdemo/integration/repositories/foo/FooRepositoryTest.java b/src/test/java/com/sctrcd/multidsdemo/integration/repositories/foo/FooRepositoryTest.java
deleted file mode 100644
index 5a51a60..0000000
--- a/src/test/java/com/sctrcd/multidsdemo/integration/repositories/foo/FooRepositoryTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.sctrcd.multidsdemo.integration.repositories.foo;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.support.AnnotationConfigContextLoader;
-
-import com.sctrcd.multidsdemo.domain.foo.Foo;
-import com.sctrcd.multidsdemo.integration.config.AppConfig;
-import com.sctrcd.multidsdemo.integration.repositories.foo.FooRepository;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
-public class FooRepositoryTest {
-
- private static Logger log = LoggerFactory.getLogger(FooRepositoryTest.class);
-
- @Autowired
- FooRepository fooRepo;
-
- @Test
- public void test() {
- try {
- Foo foo = new Foo("foo");
- fooRepo.saveAndFlush(foo);
- } catch (Exception e) {
- log.error("Error saving Foo.", e);
- throw e;
- }
- }
-
-}
diff --git a/src/test/resources/log4j.xml b/src/test/resources/log4j.xml
deleted file mode 100755
index 4b741bf..0000000
--- a/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-