Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida na persistência de dados

Prezados,

No trecho do código abaixo eu salvo o objeto e depois passo para o objeto o Path da imagem. Como é que Hibernate salva este caminho no banco se ele está vindo depois do "dao.salvar(livro)"?

dao.salvar(livro); FileSaver fileSaver = new FileSaver(); // Nossa nova classe livro.setCapaPath(fileSaver.write(capaLivro, "livros")); // Já chamamos o método write e já retornamos o path direto para o Livro

1 resposta
solução!

Bom dia, João! Como vai?

Para entender melhor essa questão, vc precisa ter a base do JPA e, portanto, seria legal que vc fizesse um curso relacionado ao assunto!

Eu vou te dar um spoiler, mas o ideal é que vc siga isso que eu acabei de falar e faça o curso de JPA que é pré-requisito desse curso de Java EE!

Na realidade, o que está sendo feito por trás dos panos quando vc faz dao.salvar(livro) é executar o método persist() do EntityManager. Só que o método persist() não efetua a persistência no momento em que é executado! O que ele faz é deixar o objeto pronto para ser persistido e a persistência só será feita no BD efetivamente quando a transação corrente for confirmada pelo método commit() da Transaction. Nesse caso, a confirmação é feita automaticamente pelo container Java EE ao final do método salvar() pois esse método utiliza a anotação Transactional, como pode ser visto nessa tarefa!

@Transactional
public String salvar() throws IOException {
     dao.salvar(livro);
     // restante do código omitido...
}

Portanto, qualquer modificação que vc faça no livro dentro desse método após a execução de dao.salvar(livro), ao final do método será incluída no BD!

Pegou a ideia?

Grande abraço e bons estudos!