Skip to content

Instantly share code, notes, and snippets.

@mluukkai
Created February 5, 2012 16:25
Show Gist options
  • Save mluukkai/1746363 to your computer and use it in GitHub Desktop.
Save mluukkai/1746363 to your computer and use it in GitHub Desktop.
// yleiskäyttönen
package wad.varasto.database;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import wad.varasto.domain.Huone;
public abstract class JPADao<T> implements DAO<T> {
@PersistenceContext
EntityManager entityManager;
private Class clazz;
public JPADao(Class clazz) {
this.clazz = clazz;
}
@Override
public void create(T instance) {
entityManager.merge(instance);
}
@Override
public T read(int id) {
return (T)entityManager.find(clazz, id);
}
@Override
public void delete(T instance) {
entityManager.remove(instance);
}
@Override
public T update(T instance) {
return entityManager.merge(instance);
}
@Override
public List<T> list() {
String TABLE = clazz.getName().substring(clazz.getName().lastIndexOf(".")+1);
Query q = entityManager.createQuery("SELECT t FROM "+TABLE+" t");
return q.getResultList();
}
}
// yleiskäyttönen
package wad.varasto.database;
import java.util.List;
public interface DAO<T> {
public void create(T instance);
public T read(int id);
public void delete(T instance);
public T update(T instance);
public List<T> list();
}
// jokaiselle Entyty-luokalle tällänen
package wad.varasto.database;
import wad.varasto.domain.Henkilo;
public interface HenkiloDao extends DAO<Henkilo> {
}
// ja tällänen
package wad.varasto.database;
import org.springframework.stereotype.Repository;
import wad.varasto.domain.Henkilo;
@Repository
public class JPAHenkiloDao extends JPADao<Henkilo> implements HenkiloDao {
public JPAHenkiloDao() {
super(Henkilo.class);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment