Comment travailler avec les interfaces et l'APP

Je dois commencer par dire que je suis assez nouveau à Java EE et que je n'ai pas de solides connaissances théoriques de base en Java encore.

Je vais avoir du mal à saisir comment utiliser JPA avec interfaces en Java. Pour illustrer ce que je trouve dur, j'ai créé un exemple très simple.

Si j'ai deux interfaces simples Person et Pet:

public interface Person
{
    public Pet getPet();
    public void setPet(Pet pet);
}

public interface Pet
{
    public String getName();
}

Et une Entité PersonEntity qui implémente Person ainsi que d'un PetEntity qui implémente Pet:

@Entity
public class PersonEntity implements Person
{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    private PetEntity pet;

    @Override
    public void setPet(Pet pet)
    {
        /* How do i solve this? */
    }
}

@Entity
public class PetEntity implements Pet
{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    private String name;

    /* Getters and Setters omitted */

}

Comment puis-je traiter correctement le cas dans le setPet méthode dans laquelle je veux conserver les relations entre les deux entités ci-dessus?

La principale raison pour laquelle je tiens à utiliser des interfaces est parce que je veux garder les dépendances entre modules/couches pour les interfaces publiques. Sinon, comment puis-je éviter une dépendance, par exemple mon ManagedBean directement à une Entité?

Si quelqu'un déconseille d'utiliser des interfaces sur les entités, alors s'il vous plaît expliquer ce que d'autres méthodes ou des motifs y sont.

source d'informationauteur Niklas Norin | 2012-01-22