Paginação com @ManyToMany

Olá,

Alguém poderia me dizer qual a melhor forma de fazer paginação com @ManyToMany? Seria melhor buscar o resultado paginado na base de dados usando uma NamedQuery ou o JPA tem alguma forma mais prática de fazê-lo?

Costumar ser por consultar ao DB mesmo. NamedQuery/Query

Usar um subList ou subSet não seria mais prático? Visto que o JPA não traz os objetos? Ou será que o próprio Set populado pelo JPA é encapsulado de forma a só trazer quando tenta buscar?

Como assim JPA não traz os objetos? Não entendi.

Eu sempre utilizei JPA e no resultado eu sempre tenho uma lista do que eu quero, por exemplo List resultado = consulta NamedQuery.

me expressei mal, rsrsr

O JPA (no caso, os frameworks que implementam o JPA), tem várias estratégias para melhorar o desempenho. Uma delas é não trazer todos os objetos do banco de dados, através do LAZY/EAGER. (sei que você sabe isso, só para eu não falar algo mais geral do que eu quero, rsrsr)

Queria saber se quando eu trago o Set de uma propriedade de um objeto usando o LAZY, esse Set é populado sob demanda mesmo se eu fizer um subSet dele.

Por namedQuery você consegue determinar quantos registros você quer trazer. [=

Você não irá precisar trazer todos e depois filtrar.

É isso?

rsrs, não me expressei bem ainda.

Sim, por namedQuery eu posso definir o “first” e o “max” para trazer somente os registros que eu quero através de um cursor no banco. A questão é se tem alguma forma mais prática disso para as entidades mapeadas com ManyToMany, no caso, estou pensando em fazer subSet dos set mapeados, mas não sei se isso vai fazer sob demanda na base de dados.

Considerando que o JPA, usando o LAZY, não traz todos os objetos do mapeamento, queria saber se eu fizer um subSet do set do mapeamento ManyToMany, ele vai trazer todos os registros e depois filtrar, ou se vai trazer sob demanda. Ou ainda, se vai manter esses objetos do subSet na memória até o objeto pai “morrer”.