Primeiramente gostaria de deixar registrado que estou achando este curso fraco. Parece que não foi revisado por ninguém.
No exemplo do exercício, só consegui executar após inserir a anotação @OneToOne no atributo titular da classe Conta e isto não foi demonstrado pelo professor.
Com relação ao relacionamento entre cliente e conta, a chave estrangeira só aparece na tabela Cliente. Na tabela Conta aparece como NULL.
1.Como corrigir isto? Uma hipótese tosca seria ter acesso a chave estrangeira e atualizar a conta a partir deste dado, mas penso que deva ter uma maneira mais inteligente de fazer isto.
No exemplo, eu crio um Cliente a partir de uma Conta existente. E se eu quiser criar um novo cliente para uma nova conta?
Quando eu tento criar uma Conta a partir de um cliente existente a aplicação ignora a anotação @JoinColumn(unique = true), independente se esta anotação seja inserida na classe Conta ou Cliente.
O instrutor faz uso do método setId como referência para persistir um cliente novo cliente. Isto é uma boa prática ? No meu entendimento, a chave primária não deveria ser alterada pela aplicação. O gerenciamento da chave primária deveria ficar apenas com o banco.