Dao Generico em JPA duvida referente extends Entity

Olá,

uma duvida referente ao um exemplo que estava vendo sobre DAO generico
e pintou uma duvida referente a linha class abstrata AbstractBaseDao
onde tem T “classe generica” com extends Entity , isso não entendi esse extends para Entity ???

e qual a finalidade da anotação :

  • @SuppressWarnings(“unchecked”)

alguém poderia me ajudar nessa duvida ???

abs




/**
 * Classe abstrata que define um DAO base com as funcionalidades básicas utilizadas por um sistema CRUD
 * (Create, Retrieve, Update e Delete).
 *  
 * @see BaseDao
 */
public abstract class AbstractBaseDao<T extends Entity, ID extends Serializable> extends JpaDaoSupport implements BaseDao<T, ID> {
	protected final static Long METHOD_FIND_BY_ID 		= 0L;
	protected final static Long METHOD_FIND_BY_CLASS 	= 1L;
	protected final static Long METHOD_PERSIST 			= 2L;
	protected final static Long METHOD_MERGE 			= 3L;
	protected final static Long METHOD_REMOVE 			= 4L;
	protected final static Long METHOD_REMOVE_BY_ID 	= 5L;
	protected final static Long METHOD_GET_LIST 		= 6L;
	protected final static Long METHOD_COUNT 			= 7L;


	/* Classe que representa o objeto de domínio gerenciado pelo DAO. */
    protected Class<T> domainClass = getDomainClass();

    /* Retorna a classe do objeto de domínio gerenciado pelo DAO. */
    @SuppressWarnings("unchecked")
	protected Class<T> getDomainClass() {
        if (domainClass == null) {
        	ParameterizedType thisType = (ParameterizedType) getClass().getGenericSuperclass();
            domainClass = (Class<T>) thisType.getActualTypeArguments()[0];
        }
        return domainClass;
    }


---

public interface Entity  {
	
	public Long getId();
}

---


public interface Cliente extends Entity, Comparable<Cliente> {
	
	public void setDescription(String description);
	public String getDescription();
	public void setLocality(String locality);

}