Tenho duas classes que se relacionam assim 1-N. Armario tem um ou mais Compartimento, Compartimento tem que ter um único ármario.
Minha classe armario tem uma List já a minha classe Compartimento tem um objecto do tipo armario.
Duvidas, já que eu não posso ter armario sem pelo menos um compartimento e compartimento não existe sem armario.
Seria correto eu deixa existi um instancia de ármario sem compartimento ?
Seria ideal ter um método dentro da classe ármario que fabrica Compartimento e que adiciona na lista de compartimento, se sim, como ficaria a classe ArmarioDAO essa seria também responsável por adicionar o os compartimentos também na base de dados?
Para garantir que um ármario não exista sem compartimento posso pega os parâmetros de compartimento no construtor de ármario e criar um compartimento e adiciona-lo na lista de compartimento?
A ArmarioDAO poderia ter a responsabílidade de administrar a persistencia de Compartimento?
classe Armario
package br.com.flextronic.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Armario implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String nome;
private List<Compartimento> compartimentos;
private Armario() {
// TODO Auto-generated constructor stub
}
public Armario(String nome) {
super();
this.nome = nome;
}
public Armario(Integer id,String nome) {
this.nome = nome;
this.id = id;
}
//getter e setters de nome e id ocultados.
public List<Compartimento> getCompartimentos() {
return compartimentos;
}
public void addCompartimento(Compartimento compartimento) {
if(this.compartimentos == null){
this.compartimentos = new ArrayList<Compartimento>();
}
this.compartimentos.add(compartimento);
}
public int qtdCompartimentos(){
return this.compartimentos.size();
}
//equals e hascode ocultado
}
classe compartimento
package br.com.flextronic.bean;
import java.io.Serializable;
import java.util.List;
public class Compartimento implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private int posicao;
private Armario armario;
private List<Equipamento> equipamentos;
public Compartimento() {
// TODO Auto-generated constructor stub
}
public Compartimento( int posicao, Armario armario) {
super();
this.posicao = posicao;
this.armario = armario;
}
public Compartimento(Integer id, int posicao, Armario armario) {
super();
this.id = id;
this.posicao = posicao;
this.armario = armario;
}
//getters e setters das propriedades armario, id e posição ocultados
public List<Equipamento> getEquipamentos() {
return equipamentos;
}
public void addEquipamentos(Equipamento equipamento) {
this.equipamentos.add(equipamento);
}
public int qtdEquipamentos (){
return this.qtdEquipamentos();
}
}
ArmarioDAO aonde estou com mais duvidas.
public class ArmarioDAO extends GenericDAO implements IDAO<Armario> {
//Seria corretor eu persistir nesse método também os compartimentos?
@Override
public int salvar(Armario bean) {
String sql ="INSERT INTO armario(nome_armario )VALUES(?)" ;
int affect= 0;
try {
affect = executeComand(sql, bean.getName());
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Erro ao Cadastrar o armario!\n"+ e.getMessage(),"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
e.printStackTrace();
}finally{
closeConexao();
}
return affect;
}
}
Já agradeço a coloboração dos usuarios do forum.