Я должен начать, сказав, что я довольно новичок в Java EE и что у меня пока нет сильного теоретического фона на Java.
Мне трудно понять, как использовать JPA вместе с interfaces в Java. Чтобы проиллюстрировать то, что я нахожу, я создал очень простой пример.
Если у меня есть два простых интерфейса Person и Pet:
public interface Person
{
public Pet getPet();
public void setPet(Pet pet);
}
public interface Pet
{
public String getName();
}
И объект PersonEntity, который реализует Person, а также PetEntity, который реализует 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 */
}
Как правильно обрабатывать случай в методе setPet, в котором я хочу сохранить отношения между этими двумя объектами выше?
Основная причина, по которой я хочу использовать интерфейсы, заключается в том, что я хочу поддерживать зависимости между модулями/уровнями для общедоступных интерфейсов. Как еще мне избежать получения зависимости от, например, мой ManagedBean непосредственно в Entity?
Если кто-то рекомендует против использования интерфейсов для сущностей, то, пожалуйста, объясните, какие существуют альтернативные методы или шаблоны.