diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md
index adfb152afd..7a18761a7b 100644
--- a/persistence-modules/spring-hibernate-5/README.md
+++ b/persistence-modules/spring-hibernate-5/README.md
@@ -5,3 +5,6 @@
- [JPA Criteria Queries](http://www.baeldung.com/hibernate-criteria-queries)
- [Introduction to Hibernate Search](http://www.baeldung.com/hibernate-search)
- [@DynamicUpdate with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-dynamicupdate)
+- [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache)
+- [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate)
+- [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource)
\ No newline at end of file
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fdt b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fdt
new file mode 100644
index 0000000000..c44ea80ed4
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fdt differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fdx b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fdx
new file mode 100644
index 0000000000..77b3c43c21
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fdx differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fnm b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fnm
new file mode 100644
index 0000000000..6a5f78d0a0
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.fnm differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.nvd b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.nvd
new file mode 100644
index 0000000000..7644ffa79b
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.nvd differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.nvm b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.nvm
new file mode 100644
index 0000000000..b2eb2c7a52
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.nvm differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.si b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.si
new file mode 100644
index 0000000000..67b02ea9fd
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.si differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.tvd b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.tvd
new file mode 100644
index 0000000000..b43b83f86a
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.tvd differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.tvx b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.tvx
new file mode 100644
index 0000000000..6b97c002b3
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6.tvx differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.doc b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.doc
new file mode 100644
index 0000000000..f86ebad3d1
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.doc differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.pos b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.pos
new file mode 100644
index 0000000000..6299098895
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.pos differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.tim b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.tim
new file mode 100644
index 0000000000..3f8b1e4ab0
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.tim differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.tip b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.tip
new file mode 100644
index 0000000000..996b9bae87
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_6_Lucene50_0.tip differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.cfe b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.cfe
new file mode 100644
index 0000000000..d1359e482e
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.cfe differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.cfs b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.cfs
new file mode 100644
index 0000000000..476949c900
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.cfs differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.si b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.si
new file mode 100644
index 0000000000..f85f471dbd
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/_7.si differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/segments_9 b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/segments_9
new file mode 100644
index 0000000000..555f95a4ee
Binary files /dev/null and b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/segments_9 differ
diff --git a/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/write.lock b/persistence-modules/spring-hibernate-5/com.baeldung.hibernatesearch.model.Product/write.lock
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/persistence-modules/spring-hibernate-5/pom.xml b/persistence-modules/spring-hibernate-5/pom.xml
index e27775c76f..694ab570a5 100644
--- a/persistence-modules/spring-hibernate-5/pom.xml
+++ b/persistence-modules/spring-hibernate-5/pom.xml
@@ -51,6 +51,11 @@
hibernate-core
${hibernate.version}
+
+ org.hibernate
+ hibernate-ehcache
+ ${hibernate.version}
+
javax.transaction
jta
diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/AbstractJpaDAO.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/AbstractJpaDAO.java
new file mode 100644
index 0000000000..0d002b8fbb
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/AbstractJpaDAO.java
@@ -0,0 +1,46 @@
+package com.baeldung.hibernate.cache.dao;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+public abstract class AbstractJpaDAO {
+
+ private Class clazz;
+
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ public final void setClazz(final Class clazzToSet) {
+ this.clazz = clazzToSet;
+ }
+
+ public T findOne(final long id) {
+ return entityManager.find(clazz, id);
+ }
+
+ @SuppressWarnings("unchecked")
+ public List findAll() {
+ return entityManager.createQuery("from " + clazz.getName()).getResultList();
+ }
+
+ public void create(final T entity) {
+ entityManager.persist(entity);
+ }
+
+ public T update(final T entity) {
+ return entityManager.merge(entity);
+ }
+
+ public void delete(final T entity) {
+ entityManager.remove(entity);
+ }
+
+ public void deleteById(final long entityId) {
+ final T entity = findOne(entityId);
+ delete(entity);
+ }
+
+}
\ No newline at end of file
diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/FooDao.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/FooDao.java
new file mode 100644
index 0000000000..68c94fc0e3
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/FooDao.java
@@ -0,0 +1,17 @@
+package com.baeldung.hibernate.cache.dao;
+
+import com.baeldung.hibernate.cache.model.Foo;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class FooDao extends AbstractJpaDAO implements IFooDao {
+
+ public FooDao() {
+ super();
+
+ setClazz(Foo.class);
+ }
+
+ // API
+
+}
diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/IFooDao.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/IFooDao.java
new file mode 100644
index 0000000000..0a6d4bdbd6
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/dao/IFooDao.java
@@ -0,0 +1,21 @@
+package com.baeldung.hibernate.cache.dao;
+
+import java.util.List;
+
+import com.baeldung.hibernate.cache.model.Foo;
+
+public interface IFooDao {
+
+ Foo findOne(long id);
+
+ List findAll();
+
+ void create(Foo entity);
+
+ Foo update(Foo entity);
+
+ void delete(Foo entity);
+
+ void deleteById(long entityId);
+
+}
diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/model/Bar.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/model/Bar.java
new file mode 100644
index 0000000000..cd8f3a57cc
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/model/Bar.java
@@ -0,0 +1,102 @@
+package com.baeldung.hibernate.cache.model;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+
+@Entity
+public class Bar implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long id;
+
+ @Column(nullable = false)
+ private String name;
+
+ @OneToMany(mappedBy = "bar", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+ @OrderBy("name ASC")
+ List fooList;
+
+ public Bar() {
+ super();
+ }
+
+ public Bar(final String name) {
+ super();
+
+ this.name = name;
+ }
+
+ // API
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(final long id) {
+
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public List getFooList() {
+ return fooList;
+ }
+
+ public void setFooList(final List fooList) {
+ this.fooList = fooList;
+ }
+
+ //
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Bar other = (Bar) obj;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("Bar [name=").append(name).append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/model/Foo.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/model/Foo.java
new file mode 100644
index 0000000000..902d76e2cc
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/model/Foo.java
@@ -0,0 +1,92 @@
+package com.baeldung.hibernate.cache.model;
+
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Cacheable
+@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
+public class Foo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public Foo() {
+ super();
+ }
+
+ public Foo(final String name) {
+ super();
+
+ this.name = name;
+ }
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column(name = "ID")
+ private Long id;
+ @Column(name = "NAME")
+ private String name;
+
+ @ManyToOne(targetEntity = Bar.class, fetch = FetchType.EAGER)
+ @JoinColumn(name = "BAR_ID")
+ private Bar bar;
+
+ public Bar getBar() {
+ return bar;
+ }
+
+ public void setBar(final Bar bar) {
+ this.bar = bar;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(final Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Foo other = (Foo) obj;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("Foo [name=").append(name).append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/service/FooService.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/service/FooService.java
new file mode 100644
index 0000000000..222968f98f
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/cache/service/FooService.java
@@ -0,0 +1,37 @@
+package com.baeldung.hibernate.cache.service;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baeldung.hibernate.cache.dao.IFooDao;
+import com.baeldung.hibernate.cache.model.Foo;
+
+@Service
+@Transactional
+public class FooService {
+
+ @Autowired
+ private IFooDao dao;
+
+ public FooService() {
+ super();
+ }
+
+ // API
+
+ public void create(final Foo entity) {
+ dao.create(entity);
+ }
+
+ public Foo findOne(final long id) {
+ return dao.findOne(id);
+ }
+
+ public List findAll() {
+ return dao.findAll();
+ }
+
+}
diff --git a/persistence-modules/spring-jpa/src/main/java/org/baeldung/config/PersistenceJNDIConfig.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/spring/PersistenceJNDIConfig.java
similarity index 92%
rename from persistence-modules/spring-jpa/src/main/java/org/baeldung/config/PersistenceJNDIConfig.java
rename to persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/spring/PersistenceJNDIConfig.java
index 56ba68dcbb..5f12dc4f5e 100644
--- a/persistence-modules/spring-jpa/src/main/java/org/baeldung/config/PersistenceJNDIConfig.java
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/spring/PersistenceJNDIConfig.java
@@ -1,4 +1,4 @@
-package org.baeldung.config;
+package com.baeldung.spring;
import java.util.Properties;
@@ -24,8 +24,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
@PropertySource("classpath:persistence-jndi.properties")
-@ComponentScan("org.baeldung.persistence")
-@EnableJpaRepositories(basePackages = "org.baeldung.persistence.dao")
+@ComponentScan("com.baeldung.hibernate.cache")
+@EnableJpaRepositories(basePackages = "com.baeldung.hibernate.cache.dao")
public class PersistenceJNDIConfig {
@Autowired
@@ -35,7 +35,7 @@ public class PersistenceJNDIConfig {
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws NamingException {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
- em.setPackagesToScan("org.baeldung.persistence.model");
+ em.setPackagesToScan("com.baeldung.hibernate.cache.model");
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
em.setJpaProperties(additionalProperties());
return em;
diff --git a/persistence-modules/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/spring/PersistenceJPAConfigL2Cache.java
similarity index 93%
rename from persistence-modules/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java
rename to persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/spring/PersistenceJPAConfigL2Cache.java
index a236cf2331..93bcb30c5f 100644
--- a/persistence-modules/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java
+++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/spring/PersistenceJPAConfigL2Cache.java
@@ -1,4 +1,4 @@
-package org.baeldung.config;
+package com.baeldung.spring;
import com.google.common.base.Preconditions;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,8 +23,8 @@ import java.util.Properties;
@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:persistence-h2.properties" })
-@ComponentScan({ "org.baeldung.persistence" })
-@EnableJpaRepositories(basePackages = { "org.baeldung.persistence.dao", "org.baeldung.persistence.repository" })
+@ComponentScan({ "com.baeldung.hibernate.cache" })
+@EnableJpaRepositories(basePackages = { "com.baeldung.hibernate.cache.dao"})
public class PersistenceJPAConfigL2Cache {
@Autowired
@@ -50,7 +50,7 @@ public class PersistenceJPAConfigL2Cache {
}
protected String[] getPackagesToScan() {
- return new String[] { "org.baeldung.persistence.model" };
+ return new String[] { "com.baeldung.hibernate.cache.model" };
}
@Bean
diff --git a/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties b/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties
index 5a137e2310..e3544d354a 100644
--- a/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties
+++ b/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties
@@ -9,6 +9,9 @@ jdbc.pass=
hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.show_sql=false
hibernate.hbm2ddl.auto=create-drop
+hibernate.cache.use_second_level_cache=true
+hibernate.cache.use_query_cache=true
+hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
# hibernate.search.X
hibernate.search.default.directory_provider = filesystem
diff --git a/persistence-modules/spring-jpa/src/main/resources/persistence-jndi.properties b/persistence-modules/spring-hibernate-5/src/main/resources/persistence-jndi.properties
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/resources/persistence-jndi.properties
rename to persistence-modules/spring-hibernate-5/src/main/resources/persistence-jndi.properties
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java
similarity index 50%
rename from persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java
rename to persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java
index e5fb728a0a..3a2f227793 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java
+++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java
@@ -1,6 +1,6 @@
-package org.baeldung.persistence.deletion.config;
+package com.baeldung.persistence.deletion.config;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
+import com.baeldung.spring.PersistenceJPAConfigL2Cache;
public class PersistenceJPAConfigDeletion extends PersistenceJPAConfigL2Cache {
@@ -10,6 +10,6 @@ public class PersistenceJPAConfigDeletion extends PersistenceJPAConfigL2Cache {
@Override
protected String[] getPackagesToScan() {
- return new String[] { "org.baeldung.persistence.deletion.model", "org.baeldung.persistence.model" };
+ return new String[] { "com.baeldung.persistence.deletion.model", "com.baeldung.persistence.model" };
}
}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Bar.java
similarity index 95%
rename from persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java
rename to persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Bar.java
index 26c4846fd2..85efd573ca 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java
+++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Bar.java
@@ -1,4 +1,4 @@
-package org.baeldung.persistence.deletion.model;
+package com.baeldung.persistence.deletion.model;
import javax.persistence.*;
import java.util.ArrayList;
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Baz.java
similarity index 94%
rename from persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java
rename to persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Baz.java
index 4fb3f8965e..bea97154d4 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java
+++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Baz.java
@@ -1,4 +1,4 @@
-package org.baeldung.persistence.deletion.model;
+package com.baeldung.persistence.deletion.model;
import javax.persistence.*;
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Foo.java
similarity index 95%
rename from persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java
rename to persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Foo.java
index 00fc34c166..f0d57c5b6e 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java
+++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/deletion/model/Foo.java
@@ -1,4 +1,4 @@
-package org.baeldung.persistence.deletion.model;
+package com.baeldung.persistence.deletion.model;
import org.hibernate.annotations.Where;
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/service/DeletionIntegrationTest.java
similarity index 94%
rename from persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java
rename to persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/service/DeletionIntegrationTest.java
index 0dbb7dbfe8..dfc944f649 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java
+++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/service/DeletionIntegrationTest.java
@@ -1,9 +1,5 @@
-package org.baeldung.persistence.service;
+package com.baeldung.persistence.service;
-import org.baeldung.persistence.deletion.config.PersistenceJPAConfigDeletion;
-import org.baeldung.persistence.deletion.model.Bar;
-import org.baeldung.persistence.deletion.model.Baz;
-import org.baeldung.persistence.deletion.model.Foo;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -15,6 +11,11 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Transactional;
+import com.baeldung.persistence.deletion.config.PersistenceJPAConfigDeletion;
+import com.baeldung.persistence.deletion.model.Bar;
+import com.baeldung.persistence.deletion.model.Baz;
+import com.baeldung.persistence.deletion.model.Foo;
+
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/SecondLevelCacheIntegrationTest.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/service/SecondLevelCacheIntegrationTest.java
similarity index 89%
rename from persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/SecondLevelCacheIntegrationTest.java
rename to persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/service/SecondLevelCacheIntegrationTest.java
index 4de8d321d5..e3436d762e 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/SecondLevelCacheIntegrationTest.java
+++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/persistence/service/SecondLevelCacheIntegrationTest.java
@@ -1,9 +1,13 @@
-package org.baeldung.persistence.service;
+package com.baeldung.persistence.service;
+
+import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.junit.Assert.assertThat;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
-import net.sf.ehcache.CacheManager;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
-import org.baeldung.persistence.model.Bar;
-import org.baeldung.persistence.model.Foo;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -15,13 +19,12 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.support.TransactionTemplate;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import com.baeldung.hibernate.cache.model.Bar;
+import com.baeldung.hibernate.cache.model.Foo;
+import com.baeldung.hibernate.cache.service.FooService;
+import com.baeldung.spring.PersistenceJPAConfigL2Cache;
-import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
-import static org.hamcrest.Matchers.greaterThan;
-import static org.junit.Assert.assertThat;
+import net.sf.ehcache.CacheManager;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
@@ -45,7 +48,7 @@ public class SecondLevelCacheIntegrationTest {
final Foo foo = new Foo(randomAlphabetic(6));
fooService.create(foo);
fooService.findOne(foo.getId());
- final int size = CacheManager.ALL_CACHE_MANAGERS.get(0).getCache("org.baeldung.persistence.model.Foo").getSize();
+ final int size = CacheManager.ALL_CACHE_MANAGERS.get(0).getCache("com.baeldung.hibernate.cache.model.Foo").getSize();
assertThat(size, greaterThan(0));
}
@@ -65,7 +68,7 @@ public class SecondLevelCacheIntegrationTest {
return nativeQuery.executeUpdate();
});
- final int size = CacheManager.ALL_CACHE_MANAGERS.get(0).getCache("org.baeldung.persistence.model.Foo").getSize();
+ final int size = CacheManager.ALL_CACHE_MANAGERS.get(0).getCache("com.baeldung.hibernate.cache.model.Foo").getSize();
assertThat(size, greaterThan(0));
}
diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md
index e856e4808e..56ce68c126 100644
--- a/persistence-modules/spring-jpa/README.md
+++ b/persistence-modules/spring-jpa/README.md
@@ -7,9 +7,6 @@
- [The DAO with JPA and Spring](http://www.baeldung.com/spring-dao-jpa)
- [JPA Pagination](http://www.baeldung.com/jpa-pagination)
- [Sorting with JPA](http://www.baeldung.com/jpa-sort)
-- [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache)
-- [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource)
-- [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate)
- [Self-Contained Testing Using an In-Memory Database](http://www.baeldung.com/spring-jpa-test-in-memory-database)
- [A Guide to Spring AbstractRoutingDatasource](http://www.baeldung.com/spring-abstract-routing-data-source)
- [A Guide to Hibernate with Spring 4](http://www.baeldung.com/the-persistence-layer-with-spring-and-jpa)
diff --git a/persistence-modules/spring-jpa/pom.xml b/persistence-modules/spring-jpa/pom.xml
index 0961cabaff..792f3918b6 100644
--- a/persistence-modules/spring-jpa/pom.xml
+++ b/persistence-modules/spring-jpa/pom.xml
@@ -44,11 +44,6 @@
hibernate-entitymanager
${hibernate.version}
-
- org.hibernate
- hibernate-ehcache
- ${hibernate.version}
-
xml-apis
xml-apis
diff --git a/persistence-modules/spring-jpa/src/main/resources/persistence-h2.properties b/persistence-modules/spring-jpa/src/main/resources/persistence-h2.properties
index 716a96fde3..a3060cc796 100644
--- a/persistence-modules/spring-jpa/src/main/resources/persistence-h2.properties
+++ b/persistence-modules/spring-jpa/src/main/resources/persistence-h2.properties
@@ -7,7 +7,4 @@ jdbc.pass=
# hibernate.X
hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create-drop
-hibernate.cache.use_second_level_cache=true
-hibernate.cache.use_query_cache=true
-hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
\ No newline at end of file
+hibernate.hbm2ddl.auto=create-drop
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextIntegrationTest.java
index 822cbb8ed5..9b0cdf180f 100644
--- a/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextIntegrationTest.java
+++ b/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextIntegrationTest.java
@@ -1,6 +1,6 @@
package com.baeldung;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
+import org.baeldung.config.PersistenceJPAConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.DirtiesContext;
@@ -10,7 +10,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
@WebAppConfiguration
@DirtiesContext
public class SpringContextIntegrationTest {
diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextTest.java
index 291e49d0c4..de333eef91 100644
--- a/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextTest.java
+++ b/persistence-modules/spring-jpa/src/test/java/com/baeldung/SpringContextTest.java
@@ -1,6 +1,6 @@
package com.baeldung;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
+import org.baeldung.config.PersistenceJPAConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.DirtiesContext;
@@ -10,7 +10,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
@WebAppConfiguration
@DirtiesContext
public class SpringContextTest {
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooPaginationPersistenceIntegrationTest.java b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooPaginationPersistenceIntegrationTest.java
index bf49a431e1..76c34affb9 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooPaginationPersistenceIntegrationTest.java
+++ b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooPaginationPersistenceIntegrationTest.java
@@ -16,7 +16,6 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.baeldung.config.PersistenceJPAConfig;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
import org.baeldung.persistence.model.Foo;
import org.junit.Before;
import org.junit.Test;
@@ -28,7 +27,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext
public class FooPaginationPersistenceIntegrationTest {
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java
index 45316cf06c..e1b53c8ded 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java
+++ b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java
@@ -3,7 +3,6 @@ package org.baeldung.persistence.service;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
import org.baeldung.config.PersistenceJPAConfig;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
import org.baeldung.persistence.model.Foo;
import org.junit.Assert;
import org.junit.Test;
@@ -18,7 +17,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext
public class FooServicePersistenceIntegrationTest {
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingIntegrationTest.java b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingIntegrationTest.java
index 61a3bfd565..40249b4b30 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingIntegrationTest.java
+++ b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingIntegrationTest.java
@@ -10,7 +10,7 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
+import org.baeldung.config.PersistenceJPAConfig;
import org.baeldung.persistence.model.Bar;
import org.baeldung.persistence.model.Foo;
import org.junit.Test;
@@ -21,7 +21,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext
@SuppressWarnings("unchecked")
public class FooServiceSortingIntegrationTest {
diff --git a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingWitNullsManualIntegrationTest.java b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingWitNullsManualIntegrationTest.java
index 50fdf5f0f3..c530003ac1 100644
--- a/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingWitNullsManualIntegrationTest.java
+++ b/persistence-modules/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingWitNullsManualIntegrationTest.java
@@ -10,7 +10,6 @@ import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.baeldung.config.PersistenceJPAConfig;
-import org.baeldung.config.PersistenceJPAConfigL2Cache;
import org.baeldung.persistence.model.Foo;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -21,7 +20,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfigL2Cache.class }, loader = AnnotationConfigContextLoader.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext
public class FooServiceSortingWitNullsManualIntegrationTest {