actuellement j'essaye d'implémenter a typed generic DAO.Typed DAO générique et Entité
Je ne comprends même pas de compiler quoi que ce soit, puisque NetBeans se plaint de UserDAOHibernate
Interfaceattendue ici
Type d'argument L'utilisateur est pas dans les limites de type variable ENTITÉ
Je suis J'ai peur qu'il y ait une erreur évidente dans la façon dont j'utilise l'héritage/interfaces, puisque je suis plutôt nouveau à Java.
Voici un code démonté
public interface GenericEntity<ID extends Serializable> {
public abstract ID getId();
public abstract void setId(final ID id);
}
public abstract class LongEntity implements GenericEntity<Long> {
protected Long id;
public Long getId();
public void setId(final Long id);
}
public class User extends LongEntity implements Serializable {
private String name;
private String password;
private Customer customer;
}
public interface GenericDAO<ENTITY extends GenericEntity<ID>, ID extends Serializable> {
public abstract ENTITY findById(ID id);
public abstract List<ENTITY> findAll();
public abstract ENTITY makePersistent(ENTITY entity);
public abstract void makeTransient(ENTITY entity);
}
public abstract class GenericHibernateDAO<ENTITY extends GenericEntity<ID>, ID extends Serializable>
implements GenericDAO<ENTITY, ID> {
}
public class UserDAOHibernate implements GenericHibernateDAO<User, LongEntity> {
}
Est-ce que LongEntity
devrait extend GenericEntity<Long>
? Si oui, comment ferais-je cela avec le seul niveau ou l'héritage de Java?
Cette approche en couches est-elle un mauvais exemple à suivre? Toutes mes entités ont besoin d'un identifiant et cette implémentation pourrait facilement être réutilisée plus tard avec différents types d'identifiant, donc j'ai pensé que je pourrais l'utiliser.
Sidenote: vous ne devez pas déclarer des méthodes d'interface abstraite (ni publique) - ils sont implicitement public et de toute façon abstraite. :) – Thomas
@Thomas Merci aussi. Sauve-moi quelques autres touches :) – user967058