Optional=false ou nullable=false?

Pessoal,

em um mapeamento @ManyToOne eu uso optional=false ou nullable=false? A FK é requerida.

@ManyToOne(optional=false)
@JoinColumn(name="id_cliente")
private Cliente cliente;

ou

@ManyToOne
@JoinColumn(name="id_cliente", nullable=false)
private Cliente cliente;

Qual é o mais certo? Ou os dois juntos?

Grato
Ademir

Também tenho a mesma dúvida.

Dizem que o optional, é uma restrição a nível de runtime
Dizem que o nullable é uma verificação gerada no ddl do banco.

Porém fiz os teste e somente com nullable não rolou o “not null” no banco.

Estou postando para “dar um up” no post.

Fiz os testes novamete e parece que tem sentido mesmo o que expliquei acima.
Se mais alguém puder fazer o teste ai.

Esses dias eu utilizei o optional e ele criou o not null no banco mysql

:?

Edit: eu me confundi, na verdade o optional deixou o campo como Unique Index