Exemplo básico de persistência no banco de dados mysql com jpa utilizando hiberante
Banco de dados - MySQL (pode ser utilizando outro banco, no meu caso utilizei a versão 5.7 do MySQL)
Hibernate (Utilizei a ultima versão atual do hibernate que era 5.36.Final) Link para download: http://hibernate.org/orm/releases/
Driver de Conexão do Java com o banco de dados MySQL Connector/J - Link para download https://dev.mysql.com/downloads/connector/j/5.1.html
No banco de dados MySQL unica coisa que irá ter que fazer manualmente é a criação da database, no meu caso o nome do banco é escola - create database escola
No Java deve criar as classes modelo e realizar o mapeamento nas classes modelo. Em cima do nome da classe adicionar a anotação @Entity javax.persistence a chave primaria deve ser mapeada com a anotação @Id javax.persistence e @GeneratedValue(strategy = GenerationType.IDENTITY) javax.persistence
Para o hibernate funcionar corretamente como você deseja é necessário criar um arquivo de configuração persistence.xml esse arquivo deve ficar na pasta META-INF(nome deve ser escrito em letras maiusculas) que seve ser criado no diretório source da aplicação(src) src\META-INF\persistence.xml
Importante! Dentro do arquivo persistence.xml o nome da persistencia(você pode escolher qualquer nome, no meu caso escolhi o nome "escola")
Configurar os parametros de conexão com o banco (url, pass, senha, driver)
Configurar o modo em que o hibernate irá conversar com o banco de dados (hibernate.dialect)
Configurar o modo em que o hibernate irá realizar as transações com o banco de dados. (validate | update | create | create-drop)
<persistence-unit name="escola" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>br.com.estudo.modelo.Aluno</class>
<class>br.com.estudo.modelo.Professor</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/escola"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<!-- validate | update | create | create-drop -->
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL55Dialect"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
Para realizar a gravação dos dados no banco de dados, após realizar os passos acima.
Criar uma classe com o método main e criar um EntityManagerFactory e durante a criação do EntityManagerFactory ele recebe o nome que você deu para seu arquivo de persistencia, no meu caso o nome foi escola (persistence-unit name="escola")
Realizar o inicio da transação getTransaction().begin()
Realizar a persistencia dos dados que você queria gravar no banco de dados persist(dados)
Se tudo ocorreu como você queria realizar o commit para validar a transação getTransaction().commit()
Importante! Sempre após a abertura da conexão com o banco de dados é necessário realizar o fechamento dessa transação close()
EntityManagerFactory emf = Persistence.createEntityManagerFactory("escola");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(dados que você quer persist no banco);
em.getTransaction().commit();
em.close();