Foros del Web » Programación para mayores de 30 ;) » Java »

transacciones en memoria, como es en java?

Estas en el tema de transacciones en memoria, como es en java? en el foro de Java en Foros del Web. hola, una pregunta c# tiene gestión de transacciones a nivel de memoria. o sea en lugar de hacer el rollback manual cuando se actualizan varias ...
  #1 (permalink)  
Antiguo 17/05/2009, 14:58
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 8 meses
Puntos: 0
transacciones en memoria, como es en java?

hola, una pregunta c# tiene gestión de transacciones a nivel de memoria. o sea en lugar de hacer el rollback manual cuando se actualizan varias listas se puede crear una transaccion y todo la memoria que se actualize en esa transaccion se le puede hacer roolback al igual que cuando se trabaja con BD.

Bajo que nombre lo puedo buscar en java, si lo tiene?



Saludos.
  #2 (permalink)  
Antiguo 18/05/2009, 04:19
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: transacciones en memoria, como es en java?

Wenas

El concepto de transaccion no es mas que un grupo de sentencias que deben ejecutarse todas o no hacer ninguna.

Para ello, lo mas facil, es crear la conexion a BBDD con autocommit() a false, con ello evitas que te haga un commit por cada insert, update...

Ejecutas tus acciones, y una vez terminado ejecutas el commit(). Si hay algo que se ha hecho mal, (una exception), ejecutas un rollback().

Este ejemplo lo muestra claro.

http://www.java2s.com/Code/Java/Data...ransaction.htm

Saludos.
  #3 (permalink)  
Antiguo 18/05/2009, 06:17
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: transacciones en memoria, como es en java?

Cita:
Iniciado por elAntonie Ver Mensaje
Wenas

El concepto de transaccion no es mas que un grupo de sentencias que deben ejecutarse todas o no hacer ninguna.

Para ello, lo mas facil, es crear la conexion a BBDD con autocommit() a false, con ello evitas que te haga un commit por cada insert, update...

Ejecutas tus acciones, y una vez terminado ejecutas el commit(). Si hay algo que se ha hecho mal, (una exception), ejecutas un rollback().

Este ejemplo lo muestra claro.

http://www.java2s.com/Code/Java/Data...ransaction.htm

Saludos.
elAntonie,
Gracias por responder a mi pregunta, pero la pregunta es para transacciones sobre memoria, por ejemplo tengo que insertar en dos arraylist y quiero hacer un tratamiento similiar cuando inserto en dos tablas de BD, o sea try cach y en el cach rollback.

y el framework me vuelve a los elementos (o toda la memoria) que estaba antes de hacer el .add(item)

PD: A modo de información en c# esto se llama, transacction scope.

Gracias.
  #4 (permalink)  
Antiguo 18/05/2009, 06:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: transacciones en memoria, como es en java?

En Java creo que no existe tal cosa, al menos en el Java estándar. No se si habrá alguna libreria de "Collections" que te haga algo así.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 18/05/2009, 08:33
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Respuesta: transacciones en memoria, como es en java?

No estoy 100% seguro pero cfreo que los EJB son capaces de hacer esto.

Si falla algo en una llamada a un EJB este hace Rollback sobre todo lo que se ha hecho.

Seria cosa de googlear un rato o bien hacer una prueba directamente.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #6 (permalink)  
Antiguo 18/05/2009, 08:37
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: transacciones en memoria, como es en java?

Cita:
Iniciado por phpnet Ver Mensaje
elAntonie,
Gracias por responder a mi pregunta, pero la pregunta es para transacciones sobre memoria, por ejemplo tengo que insertar en dos arraylist y quiero hacer un tratamiento similiar cuando inserto en dos tablas de BD, o sea try cach y en el cach rollback.

y el framework me vuelve a los elementos (o toda la memoria) que estaba antes de hacer el .add(item)

PD: A modo de información en c# esto se llama, transacction scope.

Gracias.
Perdon, me confundio lo de BD.
  #7 (permalink)  
Antiguo 18/05/2009, 08:40
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: transacciones en memoria, como es en java?

Cita:
Iniciado por goncafa Ver Mensaje
No estoy 100% seguro pero cfreo que los EJB son capaces de hacer esto.

Si falla algo en una llamada a un EJB este hace Rollback sobre todo lo que se ha hecho.

Seria cosa de googlear un rato o bien hacer una prueba directamente.

Saludos
Lo hacen sobre la bdd, no sobre los cambios de cualquier objeto.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 18/05/2009, 09:19
 
Fecha de Ingreso: junio-2008
Ubicación: Madrid
Mensajes: 73
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: transacciones en memoria, como es en java?

Cita:
Iniciado por phpnet Ver Mensaje
transacciones sobre memoria, por ejemplo tengo que insertar en dos arraylist y quiero hacer un tratamiento similiar cuando inserto en dos tablas de BD, o sea try cach y en el cach rollback.
Lo que buscas es hacer algo asi:

Código:
try{
    //Añadir elementos a la lista
    //Operar con los elementos
}finally{
    //borrar lista
}
En los bloques try catch existen las sentencias finally.
Estas se añaden tras capturar (catch) las excepciones y en ellas se declarán sentencias que se hacen siempre.

Ejemplo: Usamos una lista para sumar diferentes valores (números del 1 al 10) y luego la borramos.
Código:
....
int max = 10;
List listaNumeros = new ArrayList();
for (int i = 0; i < max; i++){
   listaNumeros.add(new Integer(i));
}
sumar();
....

void sumar(){
    try{
      //Aqui sumo los números
      int suma = 0;
           
      for (Iterator i = listaNumeros.iterator(); i.hasNext(); ){
           suma += Integer.parseInt(i.next());
      }

      System.out.println(suma);
   
   }finally{
       //Aqui borro la lista
       listaNumeros.clear();
   }
}

Última edición por Wolfchamane; 18/05/2009 a las 09:29
  #9 (permalink)  
Antiguo 18/05/2009, 09:33
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Respuesta: transacciones en memoria, como es en java?

Creo que el ejemplo de Wolfchamane esta muy bien para lo que quieres hacer.
Sin embargo el:

Código PHP:
//Aqui borro la lista
listaNumeros.clear(); 
Se deberia poner en el bloque catch,no en el finally, ya que en finally probocaria que siempre se borre la lista, ya sea que la ejecucin tubo exito o no.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.