summaryrefslogtreecommitdiffstats
path: root/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/nu/xss/jpa/dao/GenericJpaDao.java')
-rw-r--r--src/main/java/nu/xss/jpa/dao/GenericJpaDao.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java b/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java
new file mode 100644
index 0000000..5acfffc
--- /dev/null
+++ b/src/main/java/nu/xss/jpa/dao/GenericJpaDao.java
@@ -0,0 +1,43 @@
+package nu.xss.jpa.dao;
+
+import java.io.Serializable;
+import java.lang.reflect.ParameterizedType;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+public abstract class GenericJpaDao<E,K> implements Dao<E,K>, Serializable {
+
+ private static final long serialVersionUID = 4998055731089977476L;
+
+ @PersistenceContext
+ protected EntityManager entityManager;
+
+ protected Class<E> entity;
+
+ @SuppressWarnings("unchecked")
+ public GenericJpaDao() {
+ ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
+ this.entity = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
+ }
+
+ public void persist(E entity) {
+ entityManager.persist(entity);
+
+ }
+
+ public void remove(E entity) {
+ entityManager.remove(entity);
+ }
+
+ public E findById(K id) {
+ return entityManager.find(entity, id);
+ }
+
+ public List<E> findAll() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}