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!