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:
parent
1efef02605
commit
847d6ab042
@ -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>
|
||||||
|
@ -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"));
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
@ -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);
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
@ -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
|
@ -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;
|
||||||
|
@ -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>
|
@ -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;
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user