Tenho a seguinte classe:
@Entity
public class Twitter implements Serializable {
@Id
private String username;
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private Set<TwitterPost> posts;
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
public void adicionar(TwitterPost post) {
if (posts==null) {
posts = new HashSet<TwitterPost>();
}
posts.add(post);
}
Neste método adicionar estou com uma dúvida.
pois uma entidade dessas tem um set de posts com mais de 190.000 posts.
Desta forma que a entidade esta anotada,
quando eu acesso o método adicionar o hibernate popula esse set de posts com 190.00 posts,
pra depois adicionar um novo post ?
Pois estou recebendo out of memory error direto na minha aplicação web.
Se isso estiver acontecendo como posso arrumar isto ?
Pois esta lista tende a crescer mais ainda.
Não sou um expert em Hibernate, porém não imagino que o uso do mesmo para esse cenario seja o ideal.
Para preencher o Set de dados a melhor solução é ter um mecanismo de paginação, ou seja, para a lista voce faria a busca de forma diferente, SEM ser pelo mapeamento(@OneToMany).
vamos esperar se alguem pode ajudar melhor… ok?
Valeu pela ajuda, vamos ver se algum expert em Hibernate pode indicar uma solução melhor.
[quote=douglaspaulino]Não sou um expert em Hibernate, porém não imagino que o uso do mesmo para esse cenario seja o ideal.
Para preencher o Set de dados a melhor solução é ter um mecanismo de paginação, ou seja, para a lista voce faria a busca de forma diferente, SEM ser pelo mapeamento(@OneToMany).
vamos esperar se alguem pode ajudar melhor… ok?[/quote]
ok, mais adiantando algo, pode ser uma questão de de mapeamento bidirecional… concordo que com 190k de registros as chances são grandes de dar um outofmemory… porem pode-se otimizar de alguma maneira retirando a referencia contrária do mapeamento.
Verifique o mapemento existentes dentro da classe “TwitterPost”, só de voce ter a referencia contraria para o objeto “Twitter” já é um grande uso de memoria, pois este objeto ja teria referencia para outra lista de objetos “TwitterPost” e assim por diante… é bom tomar cuidado e os cascades tb.
espero ter entendido…rsrsrsrs
[quote=antonioedirane]Valeu pela ajuda, vamos ver se algum expert em Hibernate pode indicar uma solução melhor.
[quote=douglaspaulino]Não sou um expert em Hibernate, porém não imagino que o uso do mesmo para esse cenario seja o ideal.
Para preencher o Set de dados a melhor solução é ter um mecanismo de paginação, ou seja, para a lista voce faria a busca de forma diferente, SEM ser pelo mapeamento(@OneToMany).
vamos esperar se alguem pode ajudar melhor… ok?[/quote][/quote]