Estou estudando a criação de um projeto Javaweb (com Maven) e estou com o seguinte problema: estou utilizando o Hibernate para fazer o mapeamento de uma entidade Users e uma classe SessionManager para criar a sessão entre o BD e a aplicação. Só para esclarecer, essa entidade Users vai guardar o email, senha e username de uma pessoa que inserir em um formulário HTML (não fiz ainda, só atribui valores aleatórios para ver se funciona). Então, quando eu clico em “Run As”, me retorna o seguinte erro:
Exception in thread "main" java.lang.NullPointerException
at tv.loy.main.Main.main(Main.java:20)
Classe Main:
package tv.loy.main;
import org.hibernate.Transaction;
import tv.loy.entity.User;
import tv.loy.util.SessionManager;
public class Main {
public static void main(String[] args) {
SessionManager sessionManager = new SessionManager();
User user = new User();
user.setEmail("[email removido]");
user.setPassword("123");
user.setUsername("123");
/* ERRO NESSA LINHA */ Transaction tx = sessionManager.getSession().beginTransaction();
sessionManager.getSession().save(user);
tx.commit();
sessionManager.closeSession();
}
}
Classe Users:
package tv.loy.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue
private Long id;
private String username;
private String email;
private String password;
public User() {}
// Getters e setters omitidos
Classe SessionManager:
package tv.loy.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionManager {
private Session session;
public SessionManager() {}
public Session buildSession() {
Configuration config = new Configuration();
SessionFactory sessionFactory = config.buildSessionFactory();
this.session = sessionFactory.openSession();
return this.session;
}
public Session getSession() { return this.session; }
public void closeSession() { getSession().close(); }
}
Arquivo Hibernate.cfg.xml:
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name = "hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name = "hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name = "hibernate.connection.url">
jdbc:mysql://localhost:3306/loy_db
</property>
<property name = "hibernate.connection.username">
root
</property>
<property name = "hibernate.connection.password">
root
</property>
<mapping class="tv.loy.entity.Users"/>
</session-factory>
</hibernate-configuration>