Fórum Atributo do Tipo de uma Classe #1907
14/01/2009
0
Vinicius Climaco
Curtir tópico
+ 0Posts
14/01/2009
Luiz Maia
// Alguns membros privados vc coloca aqui
// ...
public Aluno() {}
// Propriedades do objeto Aluno public String Codigo { get {return _codigo;} set {_codigo = value;}}
public String Nome { get {return _nome;} set {_nome = value;}}
// 1-n propriedade do relacionamento public ArrayList Aluno_Materia
{ get {return _aluno_materia;} set {_aluno_materia= value;}}
}
public class Aluno_Materia{
// membros privados e etc
// ...
public Aluno_Materia() {}
// Propriedades do objeto Aluno_Materia public String AlunoId { get {return _alunoId;} set {_alunoId= value;}}
public String MateriaId { get {return _materiaId;} set {_materiaId = value;}}
// n-1 Propriedades dos relacionamentos public Aluno Aluno { get {return _aluno;} set {_aluno = value;}}
public Materia Materia { get {return _materia;} set {_materia = value;}}
} public class Materia{
// ...
public Materia() {}
// Propriedades do objeto Materia public String Codigo { get {return _codigo;} set {_codigo = value;}}
public String Nome { get {return _nome;} set {_nome = value;}}
// relacionamento um para um public ArrayList Aluno_Materia
{ get {return _aluno_materia;} set {_aluno_materia= value;}}
} Como vc pode ver acima, Aluno e Materia, ambos mantem a coleção Aluno_Materia como propriedade. Agora, se Aluno_Materia nao ter nenhum atributo alem das PKs, nos poderiamos simplesmente ter colocado a coleção de Alunos em Materias e a coleção de Materias em Alunos. Mas para manter a conscistencia, sempre devemos colocar a coleção dos objetos mapeados na Classe da tabela "ponte". Desta forma, se vc decidir adicionar atributos na tabela ponte, não perderá a sua consistencia e não precisará refazer seu Objectc Model. Agora o código da camada de persistencia, para recuperação do Aluno com todos os dados seguindo o que vc me solicitou: public class Aluno_MateriaFactory : DbObject, IAluno_MateriaFactoryFactory {
// ...
public Aluno_MateriaFactoryFactory() {} public ArrayList ProcurarComMaterias (String alunoId)
{
try
{
String sql = "SELECT codigo, am.materia, .... FROM materia INNER JOIN aluno_materia am ON m.codigo = am.materia
WHERE codigo = ?";
ArrayList ctList = new ArrayList(); PrepareSql(sql);
BeginTransaction();
AddCmdParameter("@alunoId", EDataType.eString, alunoId, EParamDirection.eInput);
ExecuteReader();
while (Read())
{
Aluno_MAteria am = new Aluno_MAteria();
FillAluno_MAteria(am); // copia os registros do Reader para Aluno_MAteria Materia mat = new Materia();
FillMateria (mat); // copia regsitros do Reader para Materia am.Materia = mat; // a referencia de am agora é de (n-1) para Materia
amList.Add(am);
}
ReleaseReader();
CommitTransaction();
ReleaseCommand(); return amList;
}
catch (Exception ex)
{
Rollback();
throw ex;
} Acima é a representação de todo o codigo que precisa. Qualquer coisa estou a disposição. Seguem dois videos de UML bastante interressantes e que irão ajudá-lo bastante: (caso não tenha permissão, me avise que providencio para você) https://www.devmedia.com.br/articles/viewcomp.asp?comp=9609
https://www.devmedia.com.br/articles/viewcomp.asp?comp=10949 Abraços Vinicius Aguardo seu retorno, por favor me avise se tiver alguma dúvida ou precise de mais exemplos. Att, Luiz Maia
Gostei + 0
16/01/2009
Luiz Maia
Gostei + 0
18/01/2009
Luiz Maia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)