Skip to content

Commit bf19c5d

Browse files
Refactor JPA-Demo with writing to H2
1 parent d40dfdd commit bf19c5d

File tree

9 files changed

+131
-36
lines changed

9 files changed

+131
-36
lines changed

spring-data-eclipse-store-jpa/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
<groupId>org.springframework.boot</groupId>
5050
<artifactId>spring-boot-starter-data-jpa</artifactId>
5151
</dependency>
52+
<dependency>
53+
<groupId>com.h2database</groupId>
54+
<artifactId>h2</artifactId>
55+
</dependency>
5256
<dependency>
5357
<groupId>software.xdev</groupId>
5458
<artifactId>spring-data-eclipse-store</artifactId>

spring-data-eclipse-store-jpa/src/main/java/software/xdev/spring/data/eclipse/store/jpa/Customer.java renamed to spring-data-eclipse-store-jpa/src/main/java/software/xdev/spring/data/eclipse/store/jpa/CustomerInEclipseStore.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11
package software.xdev.spring.data.eclipse.store.jpa;
22

3-
import org.springframework.data.annotation.Id;
3+
import jakarta.persistence.Id;
44

55

6-
public class Customer
6+
public class CustomerInEclipseStore
77
{
88
@Id
99
private String id;
1010

11-
private final String firstName;
12-
private final String lastName;
11+
private String firstName;
12+
private String lastName;
1313

14-
public Customer(final String firstName, final String lastName)
14+
public CustomerInEclipseStore(final String id, final String firstName, final String lastName)
1515
{
16+
this.id = id;
1617
this.firstName = firstName;
1718
this.lastName = lastName;
1819
}
1920

21+
public CustomerInEclipseStore()
22+
{
23+
24+
}
25+
2026
@Override
2127
public String toString()
2228
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package software.xdev.spring.data.eclipse.store.jpa;
2+
3+
import software.xdev.spring.data.eclipse.store.repository.interfaces.EclipseStoreCrudRepository;
4+
5+
6+
/**
7+
* To be able to properly coexist with JPA in one project, the repositories must be declared as specific JPA- or
8+
* EclipseStore-Repositories.
9+
*/
10+
public interface CustomerInEclipseStoreRepository extends EclipseStoreCrudRepository<CustomerInEclipseStore, String>
11+
{
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package software.xdev.spring.data.eclipse.store.jpa;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.Id;
5+
6+
7+
@Entity
8+
public class CustomerInJpa
9+
{
10+
@Id
11+
private String id;
12+
13+
private String firstName;
14+
private String lastName;
15+
16+
public CustomerInJpa(final String id, final String firstName, final String lastName)
17+
{
18+
this.id = id;
19+
this.firstName = firstName;
20+
this.lastName = lastName;
21+
}
22+
23+
public CustomerInJpa()
24+
{
25+
26+
}
27+
28+
@Override
29+
public String toString()
30+
{
31+
return String.format(
32+
"Customer[id=%s, firstName='%s', lastName='%s']",
33+
this.id, this.firstName, this.lastName);
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package software.xdev.spring.data.eclipse.store.jpa;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
5+
6+
/**
7+
* To be able to properly coexist with JPA in one project, the repositories must be declared as specific JPA- or
8+
* EclipseStore-Repositories.
9+
*/
10+
public interface CustomerInJpaRepository extends JpaRepository<CustomerInJpa, String>
11+
{
12+
}

spring-data-eclipse-store-jpa/src/main/java/software/xdev/spring/data/eclipse/store/jpa/CustomerRepository.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

spring-data-eclipse-store-jpa/src/main/java/software/xdev/spring/data/eclipse/store/jpa/JpaDemoApplication.java

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
import org.springframework.boot.CommandLineRunner;
2222
import org.springframework.boot.SpringApplication;
2323
import org.springframework.boot.autoconfigure.SpringBootApplication;
24-
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
25-
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
26-
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
2724
import org.springframework.context.ConfigurableApplicationContext;
2825

2926
import software.xdev.spring.data.eclipse.store.repository.config.EnableEclipseStoreRepositories;
@@ -33,25 +30,22 @@
3330
* In this example we want to coexist with Spring data JPA. This is possible by using
3431
* {@link software.xdev.spring.data.eclipse.store.repository.interfaces.EclipseStoreRepository}s instead of the generic
3532
* {@link org.springframework.data.repository.Repository}s of the Spring framework.
36-
* <p>
37-
* The {@code exclude} in {@link SpringBootApplication} prevents JPA from getting configured.
38-
* </p>
3933
*/
40-
@SpringBootApplication(
41-
exclude = {
42-
DataSourceAutoConfiguration.class,
43-
DataSourceTransactionManagerAutoConfiguration.class,
44-
HibernateJpaAutoConfiguration.class
45-
})
34+
@SpringBootApplication
4635
@EnableEclipseStoreRepositories
4736
public class JpaDemoApplication implements CommandLineRunner
4837
{
4938
private static final Logger LOG = LoggerFactory.getLogger(JpaDemoApplication.class);
50-
private final CustomerRepository customerRepository;
39+
private final CustomerInEclipseStoreRepository eclipseStoreRepository;
40+
private final CustomerInJpaRepository jpaRepository;
5141

52-
public JpaDemoApplication(final CustomerRepository customerRepository)
42+
public JpaDemoApplication(
43+
final CustomerInEclipseStoreRepository eclipseStoreRepository,
44+
final CustomerInJpaRepository jpaRepository
45+
)
5346
{
54-
this.customerRepository = customerRepository;
47+
this.eclipseStoreRepository = eclipseStoreRepository;
48+
this.jpaRepository = jpaRepository;
5549
}
5650

5751
public static void main(final String[] args)
@@ -63,14 +57,35 @@ public static void main(final String[] args)
6357
@Override
6458
public void run(final String... args)
6559
{
66-
this.customerRepository.deleteAll();
60+
this.saveEntityInEclipseStoreRepository();
61+
this.saveEntityInJpaRepository();
62+
}
63+
64+
private void saveEntityInEclipseStoreRepository()
65+
{
66+
LOG.info("-------- EclipseStore-Actions --------");
67+
this.eclipseStoreRepository.deleteAll();
68+
69+
// save a couple of customers
70+
this.eclipseStoreRepository.save(new CustomerInEclipseStore("1", "Stevie", "Nicks"));
71+
this.eclipseStoreRepository.save(new CustomerInEclipseStore("2", "Mick", "Fleetwood"));
72+
73+
// fetch all customers
74+
LOG.info("Customers found with findAll() in EclipseStore:");
75+
this.eclipseStoreRepository.findAll().forEach(c -> LOG.info(c.toString()));
76+
}
77+
78+
private void saveEntityInJpaRepository()
79+
{
80+
LOG.info("-------- JPA-Actions --------");
81+
this.jpaRepository.deleteAll();
6782

6883
// save a couple of customers
69-
this.customerRepository.save(new Customer("Stevie", "Nicks"));
70-
this.customerRepository.save(new Customer("Mick", "Fleetwood"));
84+
this.jpaRepository.save(new CustomerInJpa("1", "Stevie", "Nicks"));
85+
this.jpaRepository.save(new CustomerInJpa("2", "Mick", "Fleetwood"));
7186

7287
// fetch all customers
73-
LOG.info("Customers found with findAll():");
74-
this.customerRepository.findAll().forEach(c -> LOG.info(c.toString()));
88+
LOG.info("Customers found with findAll() in JPA:");
89+
this.jpaRepository.findAll().forEach(c -> LOG.info(c.toString()));
7590
}
7691
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/interfaces/EclipseStoreRepository.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
package software.xdev.spring.data.eclipse.store.repository.interfaces;
1717

1818
import org.springframework.data.repository.NoRepositoryBean;
19-
import org.springframework.data.repository.Repository;
2019

2120

2221
@NoRepositoryBean
23-
public interface EclipseStoreRepository<T, ID> extends Repository<T, ID>
22+
public interface EclipseStoreRepository<T, ID>
23+
extends
24+
EclipseStoreListCrudRepository<T, ID>,
25+
EclipseStoreListPagingAndSortingRepositoryRepository<T, ID>
2426
{
2527
}

spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/tests/SpecificInterfacesTest.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import software.xdev.spring.data.eclipse.store.integration.repositories.interfaces.CustomerListCrud;
3535
import software.xdev.spring.data.eclipse.store.integration.repositories.interfaces.CustomerListPagingAndSorting;
3636
import software.xdev.spring.data.eclipse.store.integration.repositories.interfaces.CustomerPagingAndSorting;
37+
import software.xdev.spring.data.eclipse.store.integration.repositories.interfaces.CustomerSimple;
3738
import software.xdev.spring.data.eclipse.store.repository.EclipseStoreStorage;
3839

3940

@@ -54,6 +55,22 @@ class SpecificInterfacesTest
5455
@Autowired
5556
private EclipseStoreStorage storage;
5657

58+
@Test
59+
void testSimple()
60+
{
61+
final CustomerSimple customer = new CustomerSimple(TestData.FIRST_NAME, TestData.LAST_NAME);
62+
this.repository.save(customer);
63+
64+
TestUtil.doBeforeAndAfterRestartOfDatastore(
65+
this.storage,
66+
() -> {
67+
final List<CustomerSimple> customers = this.repository.findAll();
68+
Assertions.assertEquals(1, customers.size());
69+
Assertions.assertEquals(customer, customers.get(0));
70+
}
71+
);
72+
}
73+
5774
@Test
5875
void testCrud()
5976
{
@@ -79,7 +96,7 @@ void testListCrud()
7996
TestUtil.doBeforeAndAfterRestartOfDatastore(
8097
this.storage,
8198
() -> {
82-
final List<CustomerListCrud> customers = TestUtil.iterableToList(this.listCrudRepository.findAll());
99+
final List<CustomerListCrud> customers = this.listCrudRepository.findAll();
83100
Assertions.assertEquals(1, customers.size());
84101
Assertions.assertEquals(customer, customers.get(0));
85102
}

0 commit comments

Comments
 (0)