在我的項目中,我使用JAX-RS將一些實體暴露給一個JavaScript前端框架(AngularJS)。JAX-RS /實體最佳實踐
我不想急於加載我的實體關係,我寧願有多種方法來獲取客戶端需要的任何關係。
將我的實體序列化爲JSON/XML我使用JAXB並將關係的ID添加到類中。我現在最終將我的實體作爲一個實體以及一個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