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.