Если я правильно понимаю вашу архитектуру, у вас есть:
Client(works with disconnected Entities)
----RMI/IIOP--->
Server(SLSB, using entitiy manager, JPA persistence)
----JDBC------->
Database
В действительности ваши SLSB выражают свой интерфейс в терминах объектов JPA, ваши DTO - это объекты JPA. Я вижу два возможных сценария:
- вашему клиенту требуется только подмножество данных в ваших объектах JPA, и вы переносите больше, чем нужно на самом деле. Например, вам может понадобиться только имя сотрудника, и вы отправляете всю его историю жизни.
- вы пересекаете больше дерева отношений, чем намереваетесь
У меня такое ощущение, что сначала вы должны точно определить, что вы получаете от клиента. Должно быть довольно легко добавить несколько операторов трассировки, чтобы точно увидеть, какие данные у вас есть.
Возможно, настроив ленивую загрузку и т. Д., Вы сможете контролировать поведение.
Я ожидаю, что вам может понадобиться определить клиентские DTO «подмножества» и заставить ваш SLSB действовать как фасад, отправляя только данные подмножества. Это больше работы, но у вас есть прекрасный контроль над тем, что в интерфейсе.
Архитектурно, точная настройка удаленного интерфейса - вполне разумная вещь, которую нужно сделать.