O código funcionou, só que me surgiu uma dúvida. Apesar da transação ser encerrada, quando eu testo depois o conta.setSaldo(500.0) teoricamente não era pra alterar, mas o valor do saldo é alterado mesmo estando no estado detached.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Conta conta = new Conta();
conta.setTitular("Márcia 6");
conta.setNumero(12345);
conta.setAgencia(54321);
conta.setSaldo(100.0);
em.persist(conta);
em.getTransaction().commit();
em.close();
EntityManager em2 = emf.createEntityManager();
System.out.println("ID da Conta da Márcia:" + conta.getId());
conta.setSaldo(500.0);
meu persistence.xml:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="contas">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>jpa.modelo.Conta</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <!-- DB Driver -->
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://127.0.0.1:5435/jpaguia" />
<property name="javax.persistence.jdbc.user" value="postgres" /> <!-- DB User -->
<property name="javax.persistence.jdbc.password" value="postgre" /> <!-- DB Password -->
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/> <!-- DB Dialect -->
<property name="hibernate.hbm2ddl.auto" value="update" /> <!-- create / create-drop / update -->
<property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
<property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
</properties>
</persistence-unit>