Boa tarde. Como o EntityManager saber que temos que inserir ou atualizar um aluno? Porque o remove tem um método próprio e eles não?
Boa tarde. Como o EntityManager saber que temos que inserir ou atualizar um aluno? Porque o remove tem um método próprio e eles não?
Olá Karolina, tudo bem?
O EntityManager sabe se deve inserir ou atualizar um aluno com base no estado do objeto que está sendo manipulado. Quando você chama o método persist()
do EntityManager, ele verifica se o objeto já está sendo gerenciado por ele. Se o objeto já estiver sendo gerenciado, significa que ele já existe no banco de dados e precisa ser atualizado. Caso contrário, o objeto é considerado novo e será inserido no banco de dados.
Por exemplo, vamos supor que você tenha um objeto aluno
que já existe no banco de dados e você queira atualizar o nome dele. Você pode fazer o seguinte:
$aluno = $entityManager->find(Aluno::class, $id);
$aluno->setNome($novoNome);
$entityManager->persist($aluno);
$entityManager->flush();
Nesse caso, o método find()
do EntityManager busca o aluno no banco de dados com base no ID fornecido. Em seguida, você atualiza o nome do aluno e chama o método persist()
para informar ao EntityManager que o objeto precisa ser atualizado. Por fim, o método flush()
é chamado para efetivar a atualização no banco de dados.
Agora, se você tiver um objeto aluno
que ainda não existe no banco de dados e deseja inseri-lo, você pode fazer o seguinte:
$aluno = new Aluno();
$aluno->setNome($nome);
$entityManager->persist($aluno);
$entityManager->flush();
Nesse caso, como o objeto aluno
é novo e não existe no banco de dados, você simplesmente o passa para o método persist()
do EntityManager e, em seguida, chama o método flush()
para inserir o aluno no banco de dados.
Espero ter esclarecido sua dúvida!
Se tiver mais alguma pergunta, é só me dizer.
Abraços e bons estudos!