Duvida Hibernate mapeamento

4 respostas
D

Tenho a tabela Aluno e Turma com relacionamento n:n , entao criei a tabela AlunoTurma.

Aluno.class

public class Aluno {

    private Long id;
    private Pessoa pessoa;
    private String matricula;
    private Collection<AlunoTurma> alunoTurmas;

    public Collection<AlunoTurma> getAlunoTurmas() {
        return alunoTurmas;
    }

    public void setAlunoTurmas(Collection<AlunoTurma> alunoTurmas) {
        this.alunoTurmas = alunoTurmas;
    }
      
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }
}

Turma.class

public class Turma {
	private Long id;
	private Disciplina disciplina;
	private Professor professor;
	private Periodo periodoAulas;
	/**
	 * O hor&#65533;rio de in&#65533;cio das aulas di&#65533;rias.
	 */
	private Date horaInicio;
	/**
	 * O hor&#65533;rio de t&#65533;rmino das aulas di&#65533;rias.
	 */
	private Date horaFim;
	private Collection<AlunoTurma> alunoTurmas;
   
    private Collection<DiaSemana> diaSemanas;

    public Collection<DiaSemana> getDiaSemanas() {
        return diaSemanas;
    }

    public void setDiaSemanas(Collection<DiaSemana> diaSemanas) {
        this.diaSemanas = diaSemanas;
    }

    public Collection<AlunoTurma> getAlunoTurmas() {
        return alunoTurmas;
    }

    public void setAlunoTurmas(Collection<AlunoTurma> alunoTurmas) {
        this.alunoTurmas = alunoTurmas;
    }

    public Periodo getPeriodoAulas() {
		return periodoAulas;
	}
	public void setPeriodoAulas(Periodo periodoAulas) {
		this.periodoAulas = periodoAulas;
	}
	
	public Disciplina getDisciplina() {
		return disciplina;
	}
	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}
	public Date getHoraFim() {
		return horaFim;
	}
	public void setHoraFim(Date horaFim) {
		this.horaFim = horaFim;
	}
	public Date getHoraInicio() {
		return horaInicio;
	}
	public void setHoraInicio(Date horaInicio) {
		this.horaInicio = horaInicio;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Professor getProfessor() {
		return professor;
	}
	public void setProfessor(Professor professor) {
		this.professor = professor;
	}
}

AlunoTurma

public class AlunoTurma {

    private Long id;
    private Aluno aluno;
    private Turma turma;

    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }
}

Como posso fazer o mapeamento dessas tabelas?

4 Respostas

Paulo_Silveira

oi deison!

voce pode “jogar fora” a classe AlunoTurma. Essa tabela associativa nao precisa ser um objeto. É justo isso que o hibernate vai te ajudar: eliminar o gap entre o OO e o ER.

Ai voce usa List<>s mesmo! E anota com @ManyToMany

D

A tabela AlunoTurma é necessario pois preciso guarda a relação dessas tabelas.

D

Como seria o relacionamento das tabelas?

diego.urban

Um dos objetivos principais do Hibernate é permitir o desenvolvimento da aplicação totalmente voltada a orientação a objetos.

Só pelo fato de no banco existir essa “tabela intermediária” que faz essa associação entre aluno e turma, não há a necessidade de criar uma classe expecífica pra essa tabela.

Existem formas de mapeamento no hibernate que são expecíficos pra esse tipo de problema.

nesse link: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-association-collections
dê uma olhada na seção: 2.2.5.3.3. Many-to-many

Criado 31 de agosto de 2009
Ultima resposta 31 de ago. de 2009
Respostas 4
Participantes 3