저는 JPA에 익숙하지 않지만이 시나리오를 가지고 있습니다 : KISS/DRY 이유로 서버와 클라이언트 (Java SE) 모두에서 동일한 클래스 ("코드"읽기)를 사용하고 싶습니다. 나에게 이것이 한 가지 가능한 방법은 엔터티에 대한 요청을 서버에 전달하고 마지막 엔 "배치 지속 작업"을 위해 모든 엔티티를 다시 서버로 전달하는 클라이언트에 (특수한) EntityManager
을 갖는 것일 것입니다. 클래스가 데이터의 유효성을 재확인하고, JPA 구현으로 일부 트랜잭션 작업 (업데이트 및 내용)을 적용하고 모든 것을 잘 유지할 수있는 곳.원격으로 관리되는 엔티티를 가질 수 있습니까?
질문은 : 가능합니까? 방법? (? 간단, 종류의 "일부"코드로이 문제를 해결하기 위해위한 솔루션입니다 이미입니까?)
편집 : 좋아, 내가 모든 사람들을위한 몇 가지를 명확히하자. 내 배경은 일반적인 퍼시스턴스 서비스라고 할 수있는 것을 사용하는 사내에서 성장한 애플리케이션 프레임 워크입니다. 즉 하나의 트랜잭션 내에서 CRUD 작업 (모든 테이블에 대해 하나의 작업 당 하나의 서비스)을 수행하지만 이러한 작업을 가로 채고 유효성 검사 및 복잡한 비즈니스 규칙 (다른 테이블, 기타.). 이는 구형 Microsoft 제품으로 구현되었습니다. DevForce 및 CSLA와 같이 최근에 유사하게 작동하지만 고급 프레임 워크가 등장한 .NET으로의 전환이있었습니다. DevForce는 특히 Java에서 수행하고자하는 것을 제공합니다 (클라이언트에서 실행하기 "this page에있는 문단을 참조한 다음 더 나은 개요를 보려면 this page을 방문하십시오).
이 일반적인 주제에 내 이전 질문 : Java "equivalent" to CSLA
그리고 분리 된 엔티티를 클라이언트로 전송하고 수정 한 다음 다시 첨부하여 서버에 다시 첨부하여 지속성을 유지하는 것과 어떻게 다른가요? –
@edalorzo 그건 내가 말하는거야,하지만 ... "경영"이 핵심 단어. 클래스가 JPA를 사용할 수 있기 때문에 클라이언트에서 EntityManager를 사용하여 내가 작업했던 모든 엔티티를 "묶어서"팩키지하게 만들 수는 없을까? 하나의 트랜잭션 스누핑 (transactional swoop)에서 영속성을 제대로 처리 할 수있는 서버상의 EntityManager? – Doc
아직 귀하의 시나리오를 이해하고 있다고 생각하지 않습니다. 내 관점에서 볼 때 클라이언트는 엔티티 관리자와 같은 것이 존재하는지조차 알 수 없습니다. 비즈니스 인터페이스를 통해 정확하게 노출 된 서버는 클라이언트가 요청할 때 단일 트랜잭션 급습에서 제안한 모든 작업을 수행 할 수 있으며 엔티티는 서버의 안전을 포기하지도 않습니다. 동시성에 관해서는 클라이언트 당 지속성 컨텍스트를 갖는 것이 악몽입니다. 동시성의 수준에 따라 모든 클라이언트는 매우 짧은 시간에 부실 캐시가 될 수 있습니다. 생각하지 않니? –