Estou com a seguinte dúvida: Criamos aqui na universidade um modelo de classes o qual devemos implementar. Acontece que nosso modelo tem muitos relacionamentos 1:m, por exemplo, precisamos pegar em tres bancos de dados diferentes informações sobre alunos de uma determinada área de conhecimento, entao uma classe AreaConhecimento terá um atributo do tipo List de objetos Aluno, certo?
Até aí tudo bem, a coisa complica quando eu devo alimentar estes objetos. Como sao centenas de alunos que sao vinculadas a uma determinada área de conhecimento, devo eu inicializar a classe AreaConhecimento logo com todos os elementos da lista do tipo Aluno? Isso nao deixaria o sistema demasiado lento? Gostaria de saber que soluções vcs me aconselhariam a utilizar, tendo em vista que o sistema nao será implementado usando Hibernate.
Agradeço a todos que cederam uma parcela do seu tempo lendo esta pequena dúvida
Cara, eu acho que vc não deve trazer as suas listas de alunos junto isso deixaria lento, o Hibernate tem um esquema que ele chama de lazy-collection, ou seja ele não traz as relações 1:n por padrão, ele só traz quando vc tenta chamar a sua lista, então vc poderia implementar algo parecido com isso, ou recuperar os alunos através de um metodo, ou seja quando vc quiser acessar os alunos da area de conhecimento, vc chame um metodo.
Na minha opinião, busque os alunos sob demanda, ou seja, quando necessários.
EX:
public class AlunoDAOImpl implements AlunoDAO {
public List obterAlunoPorArea(String area){...}
//ou
public List obterAlunoPorArea(AreaConhecimento area){...}
}
E avalie a utilização de um sistema de cache, com um tempo de X duração. OSCache é muito bom, você só precisa fazer um wrapper pra ele e ele cuida do resto.