Я должен начать, сказав, что я довольно новичок в 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?
Если кто-то рекомендует против использования интерфейсов для сущностей, то, пожалуйста, объясните, какие существуют альтернативные методы или шаблоны.