sessionFactory.openSession () gives error

0

I have a program that manages a table called Seguro.

The Safe class:

package ejercicio01;

import java.io.Serializable;
import javax.persistence.*;
import java.util.GregorianCalendar;

@Entity
@Table(name="Seguro")
public class Seguro implements Serializable{
    @Id
    @Column(name="id")
    int id;
    @Column(name="nif")
    String nif;
    @Column(name="nombre")
    String nombre;
    @Column(name="ape1")
    String ape1;
    @Column(name="ape2")
    String ape2;
    @Column(name="edad")
    int edad;
    @Column(name="numHijos")
    int numHijos;
    @Column(name="fechaCreacion")
    GregorianCalendar fechaCreacion;

    public Seguro(){}

    public Seguro(int id, String nif, String nombre, String ape1, String ape2, int edad, int numHijos, GregorianCalendar fechaCreacion) {
        this.id = id;
        this.nif = nif;
        this.nombre = nombre;
        this.ape1 = ape1;
        this.ape2 = ape2;
        this.edad = edad;
        this.numHijos = numHijos;
        this.fechaCreacion = fechaCreacion;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNif() {
        return nif;
    }

    public void setNif(String nif) {
        this.nif = nif;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApe1() {
        return ape1;
    }

    public void setApe1(String ape1) {
        this.ape1 = ape1;
    }

    public String getApe2() {
        return ape2;
    }

    public void setApe2(String ape2) {
        this.ape2 = ape2;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public int getNumHijos() {
        return numHijos;
    }

    public void setNumHijos(int numhijos) {
        this.numHijos = numhijos;
    }

    public GregorianCalendar getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(GregorianCalendar fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }
}

This class will be handled by another call PersistenceSecure:

package ejercicio01;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class PersistenciaSeguro{
    SessionFactory sessionFactory;
    Configuration configuration;
    ServiceRegistry serviceRegistry;
    Session session;

    public void PersistenciaSeguro(){
    configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    session = sessionFactory.openSession();
    }


    public void insertSeguro(Seguro s){ 
    session.beginTransaction();

    session.save(s); // El objeto queda guardado en la base de datos.

    session.getTransaction().commit();
    session.close();
    }

    public Seguro getSeguro(int id){
    session.beginTransaction();

    Seguro s=(Seguro)session.get(Seguro.class,id);

    session.getTransaction().commit();
    session.close();

     return s;
    }

    public void updateSeguro(Seguro s, String nombre, String apellido1, String apellido2, int edad, int hijos){
    session.beginTransaction();

    s.nombre=nombre;
    s.ape1=apellido1;
    s.ape2=apellido2;
    s.edad=edad;
    s.numHijos=hijos;

    session.getTransaction().commit();
    session.close();
    }

    public void deleteSeguro(int id){
    session.beginTransaction();

    Seguro s=(Seguro)session.get(Seguro.class,id); 
    session.delete(s);

    session.getTransaction().commit();
    session.close();
    }
}

And it is tested in the main file, called Exercise01:

package ejercicio01;

import java.util.GregorianCalendar;


public class Ejercicio01{
    public static void main(String[] args){

        GregorianCalendar f1=new GregorianCalendar(2013,2,23);
        GregorianCalendar f2=new GregorianCalendar(2015,4,10);

        Seguro s1=new Seguro(1,"23409876e","Paco","Maestre","Torreblanca",34,0,f1);
        Seguro s2=new Seguro(2,"90873456q","Sandra","Illazquez","Pereira",26,1,f2);

        PersistenciaSeguro a=new PersistenciaSeguro();

        a.insertSeguro(s1);
        a.insertSeguro(s2);

        Seguro s3=a.getSeguro(1);
        System.out.println(s3.edad);

        a.updateSeguro(s2, "Alicia", "Calvo", "Sotelo", 26, 3);

        System.out.println(s2.numHijos);

        a.deleteSeguro(1);
        a.deleteSeguro(2);
    }
}

Apart is the hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
  <session-factory>
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
     <property name="connection.url">jdbc:mysql://localhost/hibernate1</property>
     <property name="connection.username">daniel</property>
     <property name="connection.password">patochalado</property>
     <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
     <property name="hibernate.show_sql">true</property>
     <mapping class="ejercicio01.Seguro"/>

   </session-factory>
</hibernate-configuration>

And one persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
  <persistence-unit name="Ejercicio01PU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hibernate1?zeroDateTimeBehavior=convertToNull"/>
      <property name="javax.persistence.jdbc.user" value="daniel"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.password" value=""/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

When I run the program, I run into this:

From what I have checked, the error is in the session = sessionFactory.openSession (); , in the Persistence-Safe contructor. What will be wrong now?

Edit: I have reviewed bugs in the PersistenceSafe table.

package ejercicio01;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class PersistenciaSeguro{
    SessionFactory sessionFactory;
    Configuration configuration;
    ServiceRegistry serviceRegistry;
    Session session;

    public void PersistenciaSeguro(){
    configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    }


    public void insertSeguro(Seguro s){
    session = sessionFactory.openSession();
    session.beginTransaction();

    session.save(s); // El objeto queda guardado en la base de datos.

    session.getTransaction().commit();
    session.close();
    }

    public Seguro getSeguro(int id){
    session = sessionFactory.openSession();
    session.beginTransaction();

    Seguro s=(Seguro)session.get(Seguro.class,id);

    session.close();

     return s;
    }

    public void updateSeguro(Seguro s, String nombre, String apellido1, String apellido2, int edad, int hijos){
    session = sessionFactory.openSession();
    session.beginTransaction();

    s.nombre=nombre;
    s.ape1=apellido1;
    s.ape2=apellido2;
    s.edad=edad;
    s.numHijos=hijos;

    session.update(s); // Esto confirmara nuestras modificaciones.
    session.getTransaction().commit(); // Tras cambiar el objeto, almacenamos el cambio.
    session.close();
    }

    public void deleteSeguro(int id){
    session = sessionFactory.openSession();
    session.beginTransaction();

    Seguro s=(Seguro)session.get(Seguro.class,id); 
    session.delete(s);

    session.getTransaction().commit();
    session.close();
    }
}

I have tried to handle the Secure class directly in the main file and it works correctly. The failure occurs if I do it in PersistenceSecure.

The current error message:

Exception in thread "main" java.lang.NullPointerException
    at ejercicio01.PersistenciaSeguro.insertSeguro(PersistenciaSeguro.java:24)
    at ejercicio01.Ejercicio01.main(Ejercicio01.java:31)
C:\Users\pcx\AppData\Local\NetBeans\Cache.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

Edit: I have tried to modify the insertSecure method so that it has a try:

public void insertSeguro(Seguro s){
    System.out.println(s.getApe1());
    try{
    Session session = sessionFactory.openSession();
    session.beginTransaction();

    session.save(s); // El objeto queda guardado en la base de datos.

    session.getTransaction().commit();
    session.close();
    }
    catch(Exception e){System.out.println("Se produjo un error: "+e.getMessage());}
    }

The new execution message:

Maestre
Se produjo un error: null
Exception in thread "main" java.lang.NullPointerException
Illazquez
Se produjo un error: null
    at ejercicio01.PersistenciaSeguro.getSeguro(PersistenciaSeguro.java:36)
    at ejercicio01.Ejercicio01.main(Ejercicio01.java:34)
C:\Users\pcx\AppData\Local\NetBeans\Cache.2\executor-snippets\run.xml:53: Java returned: 1

This tells me that executing session = sessionFactory.openSession (); causes a null error, but I do not know what I'm doing wrong.

    
asked by Miguel Alparez 24.02.2018 в 20:51
source

0 answers