vamos la
imagina que vc tem duas classes
Aluno
Curso
um aluno só esta inscrito em um curso.
public class Aluno {
private Curso curso;
/* getters & setters */
}
vc certamente tem no banco de dados algo como
CREATE TABLE `aluno` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(60) NOT NULL,
`curso_id` int(11),
PRIMARY KEY (`id`)
...
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `curso` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`descricao` varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Faz sentido a sua classe Aluno ter id? sim pois é um identificador unico e sem isso vc não encontra o tal do aluno no banco de dados.
Faz sentido a sua classe Aluno ter curso_id ? eu acho que não. faz mais sentido o seu DAO ( https://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/ ) carregar o curso referente aquele id, criar um objeto Curso e socar dentro do objeto aluno, por exemplo.
ids é a forma como o banco de dados relacional vai trabalhar a integridade referencial. isso diz respeito a sua camada de infra-estrutura.
quando vc fala em classes, vc pode ter objetos contidos em objetos.
ai vc tem que se perguntar: o que faz sentido? o Curso deve ter uma lista de alunos? O aluno deve saber em que curso esta? ambos? nenhum, talvez um objeto Universidade deva saber disso?
ai vc reflete e pensa no seu problema atual