Estou começando em java e tenho uma duvida em relação a boas praticas no armazenamento de objetos dentro de objetos, oque é mais recomendado, armazenar um objeto dentro de outro ou relacionar utilizando ids?
Exemplo:
public class Empresa {
private int idEmpresa = 1;
.......
}
public class Funcionario {
private int idEmpresa = 1;
private idFuncionario = 1;
.......
}
Acredito que guardar o próprio funcionario dentro de uma lista no objeto empresa seria o ideal mas ao trabalhar com varias classes acabava perdendo a referencia da empresa daquele funcionario… é valido utilizar as duas formas em conjunto?
Você guarda o objeto inteiro, que no caso seria uma das principais práticas de orientação a objeto:
public class Empresa {
private int idEmpresa;
.......
}
public class Funcionario {
private Empresa empresa;
private idFuncionario;
.......
}
Objetos não tem suas referências perdidas ao acaso, se perdeu referência, é porque alguém removeu a referência, um provável bug na sua implementação.
porque precisa de atributos “idEmpresa” e “idFuncionario”, é o id deles no Banco de Dados?
São atributos da classe, neste exemplo eles representam os mesmos id’s de suas tabelas no banco, são utilizados para manipular cada um individualmente dentro da aplicação java.
1 curtida
Quando disse que perco a referencia quis dizer por exemplo:
Em certo momento do código tenho acesso apenas ao objeto funcionário mas preciso acessar a empresa que ele pertence, a melhor forma seria uma lista de empresas estatica onde qualquer classe possua acesso?
Você pode acessar a empresa a partir do funcionário em questão!
Exemplo:
Funcionario func = new Funcionario();
func.setEmpresa(new Empresa());
func.getEmpresa().getIdEmpresa();//resgatando informação
func.getEmpresa().setIdEmpresa();//enviando informação
Entendi… Existe algum padrão para onde deixar a lista de empresas? por exemplo, em uma List publica e estatica em uma classe separada ou devo passar essa lista para cada classe que for utilizar?
Mano dar uma lida para tipos enum eles são melhores para trabalhar, e tem desempenho melhor que criar Lista estática e tudo mais, recomendo que olhe e tenho certeza q vc vai tirar uma ideia:
http://www.botecodigital.info/java/uma-introducao-aos-enums-no-java/

Eu não utilizo listas estáticas, somente dinâmicas, mas o correto seria criar e carrega-lá no DAO, e somente apresentar na view.
Da uma olhada em padrões de projeto MVC, isso vai te dar um bom conhecimento sobre onde colocar o quê, como manipular e tudo mais.
Obrigado Jonathan, vou verificar!!