From a7464803266148b7359e30ae99814c8b946d3d8e Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 1 Jun 2013 00:40:51 +0300 Subject: [PATCH] dao work --- .../persistence/dao/AbstractJpaDAO.java | 46 +++++++++++++++++ .../org/baeldung/persistence/dao/FooDao.java | 49 ++----------------- .../org/baeldung/persistence/model/Foo.java | 4 +- 3 files changed, 52 insertions(+), 47 deletions(-) create mode 100644 spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java diff --git a/spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java b/spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java new file mode 100644 index 0000000000..13007d9fcc --- /dev/null +++ b/spring-jpa/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java @@ -0,0 +1,46 @@ +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/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java b/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java index 4f37afc9ff..77978c5cf2 100644 --- a/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java +++ b/spring-jpa/src/main/java/org/baeldung/persistence/dao/FooDao.java @@ -1,60 +1,17 @@ package org.baeldung.persistence.dao; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; - import org.baeldung.persistence.model.Foo; import org.springframework.stereotype.Repository; -import com.google.common.base.Preconditions; - @Repository -public class FooDao implements IFooDao { - - @PersistenceContext - private EntityManager entityManager; +public class FooDao extends AbstractJpaDAO implements IFooDao { public FooDao() { super(); + + setClazz(Foo.class); } // API - @Override - public Foo findOne(final long id) { - return entityManager.find(Foo.class, id); - } - - @Override - @SuppressWarnings("unchecked") - public List findAll() { - return entityManager.createQuery("from " + Foo.class.getName()).getResultList(); - } - - @Override - public void create(final Foo entity) { - Preconditions.checkNotNull(entity); - entityManager.persist(entity); - } - - @Override - public Foo update(final Foo entity) { - Preconditions.checkNotNull(entity); - return entityManager.merge(entity); - } - - @Override - public void delete(final Foo entity) { - Preconditions.checkNotNull(entity); - entityManager.remove(entity); - } - - @Override - public void deleteById(final long entityId) { - final Foo entity = findOne(entityId); - delete(entity); - } - } diff --git a/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java b/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java index 1e3bcc0131..8e1dee33e8 100644 --- a/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java +++ b/spring-jpa/src/main/java/org/baeldung/persistence/model/Foo.java @@ -1,5 +1,7 @@ package org.baeldung.persistence.model; +import java.io.Serializable; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -7,7 +9,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; @Entity -public class Foo { +public class Foo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO)