Wpis z mikrobloga

#java
#j2ee

W jaki sposób oznaczacie DAO ?

package dao;

import model.BaseEntity;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;

@Stateless
@Named("baseDao")
public class BaseDao, ID> implements Serializable {

@PersistenceContext
private EntityManager entityManager;
private Class entityClass;

public EntityManager getEntityManager() {
return entityManager;
}

public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}

public Class getEntityClass() {
if (entityClass == null) {
//only works if one extends BaseDao, we will take care of it with CDI
entityClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
return entityClass;
}

public void setEntityClass(Class entityClass) {
this.entityClass = entityClass;
}

//utility database methods
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public T find(ID id) {
return (T) this.entityManager.find(getEntityClass(), id);
}

public void delete(ID id) {
Object ref = this.entityManager.getReference(getEntityClass(), id);
this.entityManager.remove(ref);
}

public T update(T t) {
return (T) this.entityManager.merge(t);
}

public void insert(T t) {
this.entityManager.persist(t);
}

@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public List findAll() {
return entityManager.createQuery("Select entity FROM " + getEntityClass().getSimpleName() + " entity").getResultList();
}
}
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach