¿Como mantener en memoria datos de sesion en aplicacion de escritorio con java?

Iniciado por miltonprogramador, 16 Diciembre 2016, 00:45 AM

0 Miembros y 1 Visitante están viendo este tema.

miltonprogramador

Hola... este post es relacionado al anterior pero como la duda ahora es más específica en otro sentido he decidido abrir este nevo tema... resulta que pretendo manejar sesiones dejando las variables cargadas en la clase principal para no tener que consultar la base de datos por gusto... intente con herencia y no se si será por alli el camino... pero como no lo he logrado, pense un poco y se me ocurre pasar por parametro la instancia de una clase que mantenga los valores de sesion... instancia que se hizo en la clase principal... asi se mantendra la clase viva ycon ella sus atributos, los cuales para usarse bastará con pasar por parametro la misma instancia de la clase sesion a la clase que los usará o modificará... He escrito 4 clases y funciona la idea basica....

me gustaria saber si ¿es una locura lógica lo que digo o esto me resolvería definitivmente el problema?

Les muestro los codigos y les agradezco la ayuda.... es algo que me urge

Código (java) [Seleccionar]

//la clase sesión
public class Sesion {
    int num;
    public Sesion(){
        num=20;
    }
}

//La clase principal
public class Clase {
    public Sesion sesion;
    public Clase(){
       
    }
    public Clase(String ini) {
        sesion = new Sesion();
        System.out.println("Clase > Invocando a Hija1");
        Hija1 log = new Hija1(sesion);
        System.out.println("Clase > Num:" + sesion.num);
        Hija2 log2 = new Hija2(sesion);
        System.out.println("Clase > Num:" + sesion.num);
    }
    public static void main(String[] args) {
        Clase log = new Clase("ini");
    }
}


//Las clases hijas

public class Hija1 extends Clase {
public Hija1(){
     
}   
public Hija1(Sesion obj){
     System.out.println("Hija1 > El valor num es: " + obj.num);
     obj.num = 37;
     System.out.println("Hija1 > He cambiado el valor de num a: " + obj.num);
}   
}

//la otra clase hija

public class Hija2 extends Clase {
public Hija2(){
     
}   
public Hija2(Sesion obj){
     System.out.println("Hija2 > El valor num es: " + obj.num);
     obj.num += 100;
     //System.out.println("Hija1 > He cambiado el valor de num a: " + this.num);
}   
}



Ayuda
Aprendiendo de los mejores se llega a ser uno de ellos...

kingcreek

Manera de hacerlo son muchas, pero si no he entendido mal lo que quieres hacer (creo que solo almacenar valores), yo optaria por getter y setter en una clase nueva para mayor facilidad y comodidad a la hora de necesitar una variable que puedas llegar a usar en otro lugar.
Código (java) [Seleccionar]

public Class Sesion
{
        private String numero;

        public String getNumero()
        {
                return numero;
        }
        public void setNumero(String numero)
        {
                this.numero= numero;
        }
}


Para acceder a los datos o almacenarlos:
Código (java) [Seleccionar]

Sesion sesion = new Sesion();
//almacenar el valor
sesion .setNumero(20);

//obtener el valor
int numero = sesion.getNumero());

miltonprogramador

Entiendo lo del get y set no lo use en el ejemplo que deje por flojo supongo pero no los considere relevantes par el ejemplo... La inquietud en concreto es que las variables puedan ser utilizadas y modificadas desde otras clases tambien... en el emjemplo que deje lo logro inyectando la instancia por parameteros a todas las clases que la necesite... pero no se si es la mejor manera.... dices que hay muchas maneras, orientame a alguna que me ayude hace este trabajo.... gracias por dedicarte el tiempo de responderme....
Aprendiendo de los mejores se llega a ser uno de ellos...