Olá Thales, tudo bem com você?
Em relação a primeira dúvida, para caso outras pessoas também tenham, é devido as configurações no persistence.xml
:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
A primeira para habilitar o log
e o segundo para formatar
Agora a questão de isolar o EntityManager
, realmente é a melhor prática, alguns frameworks inclusive abstraem um pouco essa questão, mas o ponto é que temos uma tendência a isolar o contato com o banco de dados, então é comum termos uma classe ProdutoDAO
ou ProdutoRepository
, por exemplo, que fica responsável por ter o EntityManager
e dessa forma isolamos não apenas ele, como toda comunicação entre nossa aplicação e o BD
A abordagem do instrutor é mais de exemplificação dos diversos conceitos da JPA, por isso ele acaba fazendo esse ctrl + c / ctrl + v
da criação do Entity Manager
, o ponto positivo é que no final o aluno acaba com um código cheio de exemplos para que estudando posteriormente possa testar tudo novamente e entender de fato aquele conceito ( transient
, commit
, persist
), então o código final produzido não se assemelha a um código de sistema
Agora nos cursos de Spring Boot, ai sim temos um código de uma aplicação, e fica claro para a gente como isolamos cada parte :)
Abraços e Bons Estudos!