Não consigo rodar uma classe Java num projeto Web

1 resposta
hibernatejavaweb
L

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>

1 Resposta

Lucas_Camara

Ao criar o Configuration do hibernate, tente especificar o local onde o hibernate.cfg.xml está:

config.configure("/resources/hibernate.cfg.xml");

O nullpointer provavelmente está acontecendo pq a sessão não está sendo criada, pois não foi encontrado as configurações do hibernate.

Criado 3 de junho de 2019
Ultima resposta 3 de jun. de 2019
Respostas 1
Participantes 2