在我的项目中,我有这个架构:
控制器 -> 服务 -> 存储库 -> 数据库(oracle)。
- 控制器 -> 查看规则
- 服务 -> 业务规则
- 存储库 -> 数据库规则。
当我在服务中更改对象的 de 属性时,我的项目会自动执行更新。这是错误的,因为我必须调用我的存储库来保存!!!
我展示了我的例子:
@RequestScoped @ApplicationScoped
public class HomeController { //this is my controller
private List<Banner> banners;
@EJB
private IBannerService bannerService;
@PostConstruct
public void init() {
try {
this.banners = this.bannerService.buscarBanners(TipoBanner.HOME);
} catch (Exception e) {
e.printStackTrace();
loggerApp(ModuloTipo.PORTAL, LogTipo.ERROR, getNomeUsuarioLogado(), PortalAcaoLog.INIT_ERRO, "erro ao abrir home");
}
}
}
我的控制器调用我的服务。
@Stateless(name = "BannerService")
@Remote(IBannerService.class)
public class BannerService implements IBannerService { //this is my service
@EJB
private IBannerRepository bannerRepository;
@Override
public List<Banner> buscarBanners(TipoBanner tipo) {
List<Banner> bannersLink = this.bannerRepository.buscarBanners(tipo);
for(Banner b : bannersLink) {
System.out.println(b.getDescricao());
b.setDescricao(b.getDescricao() + " - this is a test"); //when i do this, automatically save my object 0.o... i don`t now what is happening.
}
return bannersLink;
}
@Override
public void salvar(Banner banner) {
this.bannerRepository.update(banner); //when i want to save, i call this method
}
}
这是我的存储库:
@Stateless(name = "BannerRepository")
@Local(IBannerRepository.class)
public class BannerRepository implements IBannerRepository {
@PersistenceContext
private EntityManager entityManager;
@Override
public void update(Object object) {
this.entityManager.merge(object);
}
}