@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); }
Eh przegapiłem info, że znowu była podwyżka minimalnej. I znowu zarabiam tylko 500zł więcej od sprzątaczki. 10 lat nabijania doświadczenia, 10 lat pracy jako grafik z czego 6 lat wypruwania sobie żył w agencji reklamowej i wszystko c---a warte.
#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();
}
}