This commit is contained in:
eugenp 2013-06-01 00:40:51 +03:00
parent 5fc81e081e
commit a746480326
3 changed files with 52 additions and 47 deletions

View File

@ -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<T extends Serializable> {
private Class<T> clazz;
@PersistenceContext
private EntityManager entityManager;
public final void setClazz(final Class<T> clazzToSet) {
this.clazz = clazzToSet;
}
public T findOne(final long id) {
return entityManager.find(clazz, id);
}
@SuppressWarnings("unchecked")
public List<T> 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);
}
}

View File

@ -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<Foo> 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<Foo> 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);
}
}

View File

@ -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)