如何在Java EE8中正确使用CDI [关闭]

问题描述 投票:-2回答:1
让我们考虑几种类型的实体。每个实体具有相同的基类。

abstract class Entity {} class A extends Entity {} ...

然后,每个实体都有其自己的服务连接到数据库,并且每个服务具有相同的基类。

abstract class Service<E extends Entity> {} class ServiceA extends Service<A> {} ...

然后,每个实体都有其来自DTO的映射器,每个映射器也具有相同的基类。

abstract class Mapper<E extends Entity, U> {} class MapperA extends<A, ADTO> {} ...

最后每个实体都有自己的CRUD端点。

@Path("entity-a") class ResourceA { @Inject ServiceA service; @Inject MapperA mapper; @POST @Path("create") void create(ADTO dto) { A entity = mapper.map(dto); service.save(A); } } ...

现在我的代码看起来像是。

我的问题是:是否有更好的方法通过CDI来实现这一目标?如果可以的话,应该如何正确处理?

P.S。我使用Java EE8。

java java-ee cdi java-ee-8
1个回答
0
投票
仅使用CDI的代码可能会使您感到意外。实际上,CDI不支持事务(JTA)。

因此,我建议您将EJB用于您的服务部分。这将使您进行交易,以更好地处理实体的CRUD。但是,我将继续使用CDI作为映射部分。实际上,映射与持久性无关,您不需要事务。

© www.soinside.com 2019 - 2024. All rights reserved.