tutorial que español java java-ee jpa interface java-ee-6

java - que - Cómo trabajar con interfaces y JPA



jpa java 8 (1)

Puede utilizar la propiedad targetEntity en la anotación de relación.

@Entity public class PersonEntity implements Person { private Long id; private Pet pet; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override @OneToOne(targetEntity = PetEntity.class) public Pet getPet() { return pet; } public void setPet(Pet pet) { this.pet = pet; } }

Debería comenzar diciendo que soy bastante nuevo en Java EE y que todavía no tengo una sólida formación teórica en Java.

Tengo problemas para entender cómo usar JPA junto con las interfaces en Java. Para ilustrar lo que encuentro difícil, creé un ejemplo muy simple.

Si tengo dos interfaces simples Person y Pet :

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

Y una entidad Entity PersonEntity que implementa Person así como una PetEntity que implementa 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 */ }

¿Cómo manejo adecuadamente el caso en el método setPet en el que deseo setPet las relaciones entre las dos entidades anteriores?

La razón principal por la que quiero usar interfaces es porque quiero mantener las dependencias entre los módulos / capas a las interfaces públicas. ¿De qué otra manera puedo evitar que una dependencia, por ejemplo, mi ManagedBean directamente a una Entidad?

Si alguien recomienda no usar interfaces en las entidades, explique qué métodos o patrones alternativos hay.