Estou em um grande projeto, com um modelo de desenvolvimento totalmente componentizado, mesmo porque existe 4 consultorias no mesmo projeto.
Uma das atividades nossas será criar uma camada de persistência para a base relacional, que possui cerca de 120 tabelas, altemente relacionadas.
Por questões técnicas, achei melhor não utilizar os relacionamentos entre as entidades (ejb/jpa) e criar classes que mapeiam puramente uma tabela (incluindo pks, fks e outros campos).
Portanto terei um único DAO para fazer o CRUD dessas entidades, implementado como um EJB Stateless Session Bean, para que os sistemas acessem facilmente este componente, para manipular os dados desejados.
Bom, a questão é que quero isolar das outras camadas a necessidade de conhecer JPA e todas as características dele, como por exemplo o update e delete dos objetos MANAGED.
Quero apenas fornecer alguns métodos: create, update, delete, findByPK, e os desenvolvedores não precisam se preocupar se o objeto é MANAGED, DETTACHED, etc.
Nos meus testes, fazer um simples merge no update, funciona, porém, um simples delete de um objeto NEW, não funciona. Ou terei de fazer um find e deletar, ou então um merge.
Enfim. Alguem implementou uma solução destas? Como resolveu, sem complicar muito?