Changes for BAEL-2621 (#9217)

* update dependency versions to latest

* merge repository packages

* remove obselete xml configuration

* fix formatting

* clean up

* update package name

* revert spring data jpa xml config and demonstrate how to import in PersistenceConfig by a commented @ImportResource annotation

* rename jpa repositories xml to make it more clear

* remove obselete @EnableJpaRepositories configs since we don't use spring data's jpa repositories for these congigurations
This commit is contained in:
Yavuz Tas 2020-05-07 04:22:23 +02:00 committed by GitHub
parent 1efef02605
commit 847d6ab042
13 changed files with 62 additions and 65 deletions

View File

@ -132,13 +132,13 @@
<properties> <properties>
<!-- Spring --> <!-- Spring -->
<org.springframework.version>5.2.5.RELEASE</org.springframework.version> <org.springframework.version>5.2.6.RELEASE</org.springframework.version>
<!-- persistence --> <!-- persistence -->
<hibernate.version>5.4.13.Final</hibernate.version> <hibernate.version>5.4.13.Final</hibernate.version>
<mysql-connector-java.version>8.0.19</mysql-connector-java.version> <mysql-connector-java.version>8.0.19</mysql-connector-java.version>
<h2.version>1.4.200</h2.version> <h2.version>1.4.200</h2.version>
<spring-data-jpa.version>2.2.6.RELEASE</spring-data-jpa.version> <spring-data-jpa.version>2.2.7.RELEASE</spring-data-jpa.version>
<tomcat-dbcp.version>9.0.0.M26</tomcat-dbcp.version> <tomcat-dbcp.version>9.0.0.M26</tomcat-dbcp.version>
<jta.version>1.1</jta.version> <jta.version>1.1</jta.version>
<querydsl.version>4.2.1</querydsl.version> <querydsl.version>4.2.1</querydsl.version>

View File

@ -11,7 +11,6 @@ import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.hibernate5.HibernateTransactionManager; import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean; import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager;
@ -26,7 +25,6 @@ import java.util.Properties;
@Configuration @Configuration
@EnableTransactionManagement @EnableTransactionManagement
@EnableJpaRepositories(basePackages = { "com.baeldung.hibernate.dao" }, transactionManagerRef = "jpaTransactionManager")
@EnableJpaAuditing @EnableJpaAuditing
@PropertySource({ "classpath:persistence-mysql.properties" }) @PropertySource({ "classpath:persistence-mysql.properties" })
@ComponentScan(basePackages = { "com.baeldung.persistence.dao", "com.baeldung.jpa.dao" }) @ComponentScan(basePackages = { "com.baeldung.persistence.dao", "com.baeldung.jpa.dao" })
@ -97,7 +95,7 @@ public class PersistenceConfig {
return new FooService(); return new FooService();
} }
private final Properties hibernateProperties() { private Properties hibernateProperties() {
final Properties hibernateProperties = new Properties(); final Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));

View File

@ -8,7 +8,6 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.JpaVendorAdapter;
@ -24,7 +23,6 @@ import java.util.Properties;
@EnableTransactionManagement @EnableTransactionManagement
@PropertySource({ "classpath:persistence-h2.properties" }) @PropertySource({ "classpath:persistence-h2.properties" })
@ComponentScan({ "com.baeldung.persistence","com.baeldung.jpa.dao" }) @ComponentScan({ "com.baeldung.persistence","com.baeldung.jpa.dao" })
@EnableJpaRepositories(basePackages = "com.baeldung.jpa.dao")
public class PersistenceJPAConfig { public class PersistenceJPAConfig {
@Autowired @Autowired

View File

@ -1,9 +1,6 @@
package com.baeldung.spring.data.persistence.config; package com.baeldung.spring.data.persistence.config;
import java.util.Properties; import com.google.common.base.Preconditions;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
@ -19,14 +16,15 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.google.common.base.Preconditions; import javax.sql.DataSource;
import java.util.Properties;
@Configuration @Configuration
@EnableTransactionManagement @EnableTransactionManagement
@PropertySource({ "classpath:persistence-${envTarget:h2}.properties" }) @PropertySource({ "classpath:persistence-${envTarget:h2}.properties" })
@ComponentScan({ "com.baeldung.spring.data.persistence" }) @ComponentScan({ "com.baeldung.spring.data.persistence" })
// @ImportResource("classpath*:springDataPersistenceConfig.xml") //@ImportResource("classpath*:*springDataJpaRepositoriesConfig.xml")
@EnableJpaRepositories(basePackages = { "com.baeldung.spring.data.persistence.dao", "com.baeldung.spring.data.persistence.jpaquery" }) @EnableJpaRepositories("com.baeldung.spring.data.persistence.repository")
public class PersistenceConfig { public class PersistenceConfig {
@Autowired @Autowired
@ -40,10 +38,9 @@ public class PersistenceConfig {
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource()); em.setDataSource(dataSource());
em.setPackagesToScan(new String[] { "com.baeldung.spring.data.persistence.model" }); em.setPackagesToScan("com.baeldung.spring.data.persistence.model");
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
// vendorAdapter.set
em.setJpaVendorAdapter(vendorAdapter); em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties()); em.setJpaProperties(additionalProperties());
@ -78,7 +75,7 @@ public class PersistenceConfig {
final Properties hibernateProperties = new Properties(); final Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
// hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true");
return hibernateProperties; return hibernateProperties;
} }

View File

@ -1,7 +1,6 @@
package com.baeldung.spring.data.persistence.model; package com.baeldung.spring.data.persistence.model;
import javax.persistence.*; import javax.persistence.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -13,14 +12,22 @@ public class User {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private int id;
private String name; private String name;
private LocalDate creationDate; private LocalDate creationDate;
private LocalDate lastLoginDate; private LocalDate lastLoginDate;
private boolean active; private boolean active;
private int age; private int age;
@Column(unique = true, nullable = false) @Column(unique = true, nullable = false)
private String email; private String email;
private Integer status; private Integer status;
@OneToMany @OneToMany
List<Possession> possessionList; List<Possession> possessionList;

View File

@ -1,11 +1,13 @@
package com.baeldung.spring.data.persistence.dao; package com.baeldung.spring.data.persistence.repository;
import com.baeldung.spring.data.persistence.model.Foo; import com.baeldung.spring.data.persistence.model.Foo;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
public interface IFooDao extends JpaRepository<Foo, Long> { public interface IFooDao extends JpaRepository<Foo, Long> {
@Query("SELECT f FROM Foo f WHERE LOWER(f.name) = LOWER(:name)") @Query("SELECT f FROM Foo f WHERE LOWER(f.name) = LOWER(:name)")
Foo retrieveByName(@Param("name") String name); Foo retrieveByName(@Param("name") String name);
} }

View File

@ -1,9 +1,4 @@
package com.baeldung.spring.data.persistence.jpaquery; package com.baeldung.spring.data.persistence.repository;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;
import java.util.stream.Stream;
import com.baeldung.spring.data.persistence.model.User; import com.baeldung.spring.data.persistence.model.User;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@ -14,6 +9,11 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;
import java.util.stream.Stream;
public interface UserRepository extends JpaRepository<User, Integer>, UserRepositoryCustom { public interface UserRepository extends JpaRepository<User, Integer>, UserRepositoryCustom {
Stream<User> findAllByName(String name); Stream<User> findAllByName(String name);

View File

@ -1,14 +1,16 @@
package com.baeldung.spring.data.persistence.jpaquery; package com.baeldung.spring.data.persistence.repository;
import com.baeldung.spring.data.persistence.model.User;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.function.Predicate; import java.util.function.Predicate;
import com.baeldung.spring.data.persistence.model.User;
public interface UserRepositoryCustom { public interface UserRepositoryCustom {
List<User> findUserByEmails(Set<String> emails); List<User> findUserByEmails(Set<String> emails);
List<User> findAllUsersByPredicates(Collection<Predicate<User>> predicates); List<User> findAllUsersByPredicates(Collection<Predicate<User>> predicates);
} }

View File

@ -1,5 +1,10 @@
package com.baeldung.spring.data.persistence.jpaquery; package com.baeldung.spring.data.persistence.repository;
import com.baeldung.spring.data.persistence.model.User;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -7,16 +12,6 @@ import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import com.baeldung.spring.data.persistence.model.User;
public class UserRepositoryCustomImpl implements UserRepositoryCustom { public class UserRepositoryCustomImpl implements UserRepositoryCustom {
@PersistenceContext @PersistenceContext

View File

@ -2,7 +2,7 @@ package com.baeldung.spring.data.persistence.service.impl;
import com.baeldung.spring.data.persistence.model.Foo; import com.baeldung.spring.data.persistence.model.Foo;
import com.baeldung.spring.data.persistence.dao.IFooDao; import com.baeldung.spring.data.persistence.repository.IFooDao;
import com.baeldung.spring.data.persistence.service.IFooService; import com.baeldung.spring.data.persistence.service.IFooService;
import com.baeldung.spring.data.persistence.service.common.AbstractService; import com.baeldung.spring.data.persistence.service.common.AbstractService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa" <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/beans/spring-beans.xsd
@ -7,6 +8,6 @@
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"
> >
<jpa:repositories base-package="com.baeldung.persistence.dao"/> <jpa:repositories base-package="com.baeldung.spring.data.persistence.repository"/>
</beans> </beans>

View File

@ -1,4 +1,4 @@
package com.baeldung.spring.data.persistence.jpaquery; package com.baeldung.spring.data.persistence.repository;
import com.baeldung.spring.data.persistence.config.PersistenceConfig; import com.baeldung.spring.data.persistence.config.PersistenceConfig;
import com.baeldung.spring.data.persistence.model.User; import com.baeldung.spring.data.persistence.model.User;

View File

@ -1,8 +1,4 @@
package com.baeldung.spring.data.persistence.jpaquery; package com.baeldung.spring.data.persistence.repository;
import static org.assertj.core.api.Assertions.assertThat;
import java.time.LocalDate;
import com.baeldung.spring.data.persistence.config.PersistenceConfig; import com.baeldung.spring.data.persistence.config.PersistenceConfig;
import com.baeldung.spring.data.persistence.model.User; import com.baeldung.spring.data.persistence.model.User;
@ -14,9 +10,10 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader; import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
/** import java.time.LocalDate;
* Created by adam.
*/ import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) @ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext @DirtiesContext