Foro de elhacker.net

Programación => Java => Mensaje iniciado por: miltonprogramador en 16 Diciembre 2016, 00:45 am



Título: ¿Como mantener en memoria datos de sesion en aplicacion de escritorio con java?
Publicado por: miltonprogramador en 16 Diciembre 2016, 00:45 am
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
  1. //la clase sesión
  2. public class Sesion {
  3.    int num;
  4.    public Sesion(){
  5.        num=20;
  6.    }
  7. }
  8.  
  9. //La clase principal
  10. public class Clase {
  11.    public Sesion sesion;
  12.    public Clase(){
  13.  
  14.    }
  15.    public Clase(String ini) {
  16.        sesion = new Sesion();
  17.        System.out.println("Clase > Invocando a Hija1");
  18.        Hija1 log = new Hija1(sesion);
  19.        System.out.println("Clase > Num:" + sesion.num);
  20.        Hija2 log2 = new Hija2(sesion);
  21.        System.out.println("Clase > Num:" + sesion.num);
  22.    }
  23.    public static void main(String[] args) {
  24.        Clase log = new Clase("ini");
  25.    }
  26. }
  27.  
  28.  
  29. //Las clases hijas
  30.  
  31. public class Hija1 extends Clase {
  32. public Hija1(){
  33.  
  34. }  
  35. public Hija1(Sesion obj){
  36.     System.out.println("Hija1 > El valor num es: " + obj.num);
  37.     obj.num = 37;
  38.     System.out.println("Hija1 > He cambiado el valor de num a: " + obj.num);
  39. }  
  40. }
  41.  
  42. //la otra clase hija
  43.  
  44. public class Hija2 extends Clase {
  45. public Hija2(){
  46.  
  47. }  
  48. public Hija2(Sesion obj){
  49.     System.out.println("Hija2 > El valor num es: " + obj.num);
  50.     obj.num += 100;
  51.     //System.out.println("Hija1 > He cambiado el valor de num a: " + this.num);
  52. }  
  53. }
  54.  
  55.  

Ayuda


Título: Re: ¿Como mantener en memoria datos de sesion en aplicacion de escritorio con java?
Publicado por: kingcreek en 16 Diciembre 2016, 01:27 am
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
  1. public Class Sesion
  2. {
  3.        private String numero;
  4.  
  5.        public String getNumero()
  6.        {
  7.                return numero;
  8.        }
  9.        public void setNumero(String numero)
  10.        {
  11.                this.numero= numero;
  12.        }
  13. }
  14.  

Para acceder a los datos o almacenarlos:
Código
  1. Sesion sesion = new Sesion();
  2. //almacenar el valor
  3. sesion .setNumero(20);
  4.  
  5. //obtener el valor
  6. int numero = sesion.getNumero());
  7.  


Título: Re: ¿Como mantener en memoria datos de sesion en aplicacion de escritorio con java?
Publicado por: miltonprogramador en 16 Diciembre 2016, 01:49 am
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....