Para todos aquellos que os iniciéis en la creación de aplicaciones ricas para Internet (RIA's), y decidáis apostar por usar LiveCycle Data Management en lugar de RemoteObject's, creo interesante avisaros de que esta tecnología nos facilitará muchísimo el acceso y persistencia de datos, ya que nos hace transparente las llamadas al motor de persistencia que tendremos en nuestro servidor Java (TopLink, JPA, Hibernate,etc..) y desde Flex, todo será crear objetos de datos y llamar a la función commit() de nuestro DataService, lo malo viene, cuando crees que estas paginando los datos, pero no ocurre así, y eso pasa por que en la configuración de LiveCycle puedes indicarle un valor de paginación, y en realidad en tu cliente Flex, obtienes los datos paginados, de manera transparente, pero lo que realmente está ocurriendo es que solo se pagina la transacción entre cliente y servidor, pero en el motor de persistencia la consulta que inicias es total (algo como SELECT * FROM xx) esto provoca que nuestro "Hibernate" instancia sin remedio en la session del servidor un objeto de datos por cada registro que exista en la consulta realizada, o sea como no limitamos por "SQL" se trataría del total del volumen de datos que exista en la Base de Datos. Lo que ocurre después, es sabido por todos, cada cliente que se conecte, hará lo mismo, y en pocos accesos, habremos agotado la memoria del servidor, con lo que lo colapsaremos sin remedio.

Para evitar esto, eliminad las relaciones en cascada que ofrecen los motores de persistencia, las llamadas relaciones one-to-many, ya que eso provoca que el motor traiga todos los registros que le cuelguen a cada registro, sin preguntaros por limite alguno.

Yo actualmente he optado, por usar DataServices, para el salvado y cargado de datos, pero las consultas en cascada, las ordeno manualmente, con una consulta específica, limitando así el numero de registros que maneja la sesión del motor.