diff --git a/starting/spring-jpa/.project b/starting/spring-jpa/.project index 235ae29ecf..20cc7fd450 100644 --- a/starting/spring-jpa/.project +++ b/starting/spring-jpa/.project @@ -1,6 +1,6 @@ - spring-jpa + spring-jpa-start diff --git a/starting/spring-jpa/pom.xml b/starting/spring-jpa/pom.xml index 849a62ee36..416b6f11e3 100644 --- a/starting/spring-jpa/pom.xml +++ b/starting/spring-jpa/pom.xml @@ -11,42 +11,39 @@ + + org.javassist + javassist + 3.18.1-GA + + - - org.springframework - spring-web - ${org.springframework.version} - - - org.springframework - spring-orm - ${org.springframework.version} - org.springframework spring-context ${org.springframework.version} + + + + + + - - org.hibernate - hibernate-entitymanager - ${hibernate.version} - - - org.javassist - javassist - 3.18.1-GA - - - mysql - mysql-connector-java - ${mysql-connector-java.version} - runtime - + + + + + + + + + + + @@ -67,16 +64,16 @@ - org.apache.commons - commons-lang3 - ${commons-lang3.version} + org.springframework + spring-test + ${org.springframework.version} test - org.springframework - spring-test - ${org.springframework.version} + org.apache.commons + commons-lang3 + ${commons-lang3.version} test @@ -205,13 +202,13 @@ 2.1.0 - + 3.1 2.4 2.16 2.6 - 1.4.5 + 1.4.6 diff --git a/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java b/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java deleted file mode 100644 index 13007d9fcc..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.baeldung.persistence.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/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java b/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java deleted file mode 100644 index 77978c5cf2..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung.persistence.dao; - -import org.baeldung.persistence.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/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/IFooDao.java b/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/IFooDao.java deleted file mode 100644 index f5799522e2..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/persistence/dao/IFooDao.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.baeldung.persistence.dao; - -import java.util.List; - -import org.baeldung.persistence.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/starting/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java b/starting/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java deleted file mode 100644 index 8e1dee33e8..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.baeldung.persistence.model; - -import java.io.Serializable; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - -@Entity -public class Foo implements Serializable { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private long id; - - @Column(nullable = false) - private String name; - - public Foo() { - super(); - } - - public Foo(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; - } - - // - - @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/starting/spring-jpa/src/main/java/org/baeldung/persistence/service/FooService.java b/starting/spring-jpa/src/main/java/org/baeldung/persistence/service/FooService.java deleted file mode 100644 index b07698c438..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/persistence/service/FooService.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.baeldung.persistence.service; - -import org.baeldung.persistence.dao.IFooDao; -import org.baeldung.persistence.model.Foo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional -public class FooService { - - @Autowired - private IFooDao dao; - - public FooService() { - super(); - } - - // API - - public void create(final Foo entity) { - dao.create(entity); - } - -} diff --git a/starting/spring-jpa/src/main/java/org/baeldung/spring/PersistenceJPAConfig.java b/starting/spring-jpa/src/main/java/org/baeldung/spring/PersistenceJPAConfig.java deleted file mode 100644 index 3b36b47438..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/spring/PersistenceJPAConfig.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.baeldung.spring; - -import java.util.Properties; - -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.ComponentScan; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; -import org.springframework.jdbc.datasource.DriverManagerDataSource; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import com.google.common.base.Preconditions; - -// @Configuration -@EnableTransactionManagement -@PropertySource({ "classpath:persistence-mysql.properties" }) -@ComponentScan({ "org.baeldung.persistence" }) -public class PersistenceJPAConfig { - - @Autowired - private Environment env; - - public PersistenceJPAConfig() { - super(); - } - - @Bean - public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() { - final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); - em.setDataSource(dataSource()); - em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" }); - - final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); - // vendorAdapter.set - em.setJpaVendorAdapter(vendorAdapter); - em.setJpaProperties(additionalProperties()); - - return em; - } - - @Bean - public DataSource dataSource() { - final DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); - dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); - dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); - dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); - - return dataSource; - } - - @Bean - public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) { - final JpaTransactionManager transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(emf); - return transactionManager; - } - - @Bean - public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { - return new PersistenceExceptionTranslationPostProcessor(); - } - - final Properties additionalProperties() { - return new Properties() { - { - setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); - setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); - - // setProperty("hibernate.globally_quoted_identifiers", "true"); - // note: necessary in launchpad-storage, but causing problems here - } - }; - } - -} \ No newline at end of file diff --git a/starting/spring-jpa/src/main/java/org/baeldung/spring/PersistenceJPAConfigXml.java b/starting/spring-jpa/src/main/java/org/baeldung/spring/PersistenceJPAConfigXml.java deleted file mode 100644 index 98f4f47249..0000000000 --- a/starting/spring-jpa/src/main/java/org/baeldung/spring/PersistenceJPAConfigXml.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.baeldung.spring; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.ImportResource; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -@Configuration -@EnableTransactionManagement -@ComponentScan({ "org.baeldung.persistence" }) -@ImportResource({ "classpath:jpaConfig.xml" }) -public class PersistenceJPAConfigXml { - - public PersistenceJPAConfigXml() { - super(); - } - -} \ No newline at end of file diff --git a/starting/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java b/starting/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java deleted file mode 100644 index 2d8de007db..0000000000 --- a/starting/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.baeldung.persistence.service; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; - -import org.baeldung.persistence.model.Foo; -import org.baeldung.spring.PersistenceJPAConfig; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.dao.InvalidDataAccessApiUsageException; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class) -public class FooServicePersistenceIntegrationTest { - - @Autowired - private FooService service; - - // tests - - @Test - public final void whenContextIsBootstrapped_thenNoExceptions() { - // - } - - @Test - public final void whenEntityIsCreated_thenNoExceptions() { - service.create(new Foo(randomAlphabetic(6))); - } - - @Test(expected = DataIntegrityViolationException.class) - public final void whenInvalidEntityIsCreated_thenDataException() { - service.create(new Foo()); - } - - @Test(expected = DataIntegrityViolationException.class) - public final void whenEntityWithLongNameIsCreated_thenDataException() { - service.create(new Foo(randomAlphabetic(2048))); - } - - @Test(expected = InvalidDataAccessApiUsageException.class) - public final void whenSameEntityIsCreatedTwice_thenDataException() { - final Foo entity = new Foo(randomAlphabetic(8)); - service.create(entity); - service.create(entity); - } - - @Test(expected = DataAccessException.class) - public final void temp_whenInvalidEntityIsCreated_thenDataException() { - service.create(new Foo()); - } - -}