Прежде всего я новичок в JPA и Jax-rs, я пытаюсь разработать сервис отдыха. Поэтому я создал класс ресурсов и аннотировал его.JPA создать фабрику управления сущностями для каждого запроса?
@Path("/companies")
public class CompanyResource {
private EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("test");
@GET
@Produces({MediaType.APPLICATION_JSON})
public List<Company> getCompanies() {
EntityManager entityManager = entityManagerFactory.createEntityManager();
return new ArrayList<>();
}
@GET
@Path("{companyId}")
@Produces({MediaType.APPLICATION_JSON})
public Company getCompany(@PathParam("companyId") int id) {
return new Company();
}
}
Из того, что я понял о JAX-RS для каждого запроса клиента экземпляра CompanyResource
будет создано, это означает, что каждый раз, когда новый EntityManagerFactory
будет создан, который я предполагаю, что это не очень хорошая идея, так как я просто нужен это для создания менеджеров сущностей, что может быть сделано только с одним экземпляром. Итак, каков правильный способ достичь этого? Или это нормально, чтобы создать новый экземпляр этой фабрики для каждого запроса?
P.S. Я видел несколько примеров, где они используют аннотацию @Stateless
и вводят Entity Manager, но я предполагаю, что они используют EJB
там (возможно, я ошибаюсь), и я не хочу углубляться в EJB
прямо сейчас.
Не следует создавать экземпляры EM или EMF. Используйте IDE, например Netbeans или Eclispes, и вы можете создать веб-сервис Entire Resfull и посмотреть, как он моделируется. Https://netbeans.org/kb/71/websvc/rest.html – vels4j
- это ваша среда Java EE или SE (последняя быть Tomcat, я думаю)? –
@francescoforesti Java EE, GlassFish как сервер приложений. – Asiat