1
resposta

Dúvida sobre a inserção de aluno e update

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?

1 resposta

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!