В моем проекте я использую JAX-RS для предоставления некоторых объектов интерфейсной платформе javascript (AngularJS).
Я не хочу с нетерпением загружать отношения сущностей, и у меня есть несколько методов для получения любого отношения, которое нужно клиенту.
Чтобы сериализовать свою сущность в JSON/XML, я использую JAXB и добавляю идентификаторы отношений в класс. Теперь я получаю, что моя сущность является сущностью, а также DTO.
На каждом POST мне нужно вернуть ссылку на мою сущность.
Я хотел бы знать, является ли это подходящим способом разоблачения сущностей или есть лучшие способы?
Пример всегда понятнее, чем длинный текст, вот он:
@XmlRootElement
@Entity
public class Country {
@Id
@GeneratedValue
private Integer id;
private String countryName;
@ManyToOne
private Region region;
@Transient
private Integer regionId;
// getters & setters
// AVOID SERIALIZING REGION
@XmlTransient
public Region getRegion ...
// SERIALIZE REGION ID INSTEAD
public Integer getRegionId() {
if (region != null)
return region.getId();
else
return null;
}
...
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
public class Region {
@Id
@GeneratedValue
private Integer id;
private String regionName;
// getters & setters
...
}
@Stateless
@Path("countries")
public class CountryResource {
@PersistenceContext
private EntityManager em;
@GET
public List<Country> getAll() {
return em.createNamedQuery("Country.findAll", Country.class).getResultList();
}
@PUT
public void saveCountry saveCountry(Country country) {
// UPDATE REFERENCES
country.setRegion(em.getReference(Region.class, country.getRegionId()));
em.persist(country);
}
}
Вы предлагаете что-то другое?
Спасибо,
F.D