BASES DE DATOS
Transacción en una base de datos
Una transacción en un Sistema de Gestión de Bases de Datos, es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica.
Un SGBD se dice transaccional, si es capaz de mantener la integridad de los datos, haciendo que estas transacciones no puedan finalizar en un estado intermedio. Cuando por alguna causa el sistema debe cancelar la transacción, empieza a deshacer las órdenes ejecutadas hasta dejar la base de datos en su estado inicial (llamado punto de integridad), como si la orden de la transacción nunca se hubiese realizado. Una transacción debe contar con ACID quiere decir: Atomicidad, Consistencia, Aislamiento y Durabilidad. Entonces para que un Sistema de Gestión de Bases de Datos sea considerado Transaccional, debe cumplir con estos criterios.
Transacciones manejadas por el container
- Required. Se utiliza este modo si se desea que el bean se ejecute siempre dentro de una transacción. Si una transacción se encuentra en curso, el bean participa en ella. Si no existe ninguna transacción en curso, el container creará una especial para la ejecución del método del bean y al finalizar el container ejecuta un commit si es que no ha sido abortada por el bean. Este modo es utilizado cuando se necesita que el bean sea transaccional.
- RequiresNew. En este modo el método del bean siempre ejecutará en una nueva transacción. Si no existen transacciones, se crea una especial igual al modo Required. Si existe una transacción en curso, es suspendida mientras el bean ejecuta en una transacción independiente y una vez terminado el método del bean, la transacción inicial continúa su curso. Se puede utilizar este modo cuando el bean es transaccional pero no se desea que comparta instrucciones con otros beans o con el cliente.
- NotSupported. En este modo el bean no puede ser ejecutado dentro de una transacción. Por tanto si se está desarrollado una transacción, es suspendida su ejecución mientras se ejecuta el bean y luego es reanudada al finalizar el bean. Este modo puede ser utilizado cuando el bean no requiere de sistemas transaccionales o no se desean las propiedades ácidas para su ejecución. Por ejemplo se puede utilizar para ciertos beans con reportes de baja prioridad y no se desea bajar el performance del sistema con ellos.
- Supports. En este modo el comportamiento depende de si existe una transacción en curso. Si es así, es utilizada dentro del bean. Si no es así, el bean no se ejecuta dentro de una transacción. Dada la dualidad de comportamiento, este modo debe ser utilizado con cuidado. Puede utilizarse cuando se desea delegar la decisión de usar una transacción sobre otro bean.
- Mandatory. En este modo es obligatoria la existencia de una
transacción en curso para su ejecución. De no ser así el container debe
emitir la excepción javax.ejb.TransactionRequiredException si se
está utilizando interfaces remotas o
javax.ejb.TransactionRequiredLocalException si se utiliza una
interfaz local. Este modo garantiza que la ejecución será realizada bajo
una transacción que fue iniciada por el cliente. Es útil para beans que
componen un workflow y que son parte de un sistema mayor.
- Never. En este modo es obligatoria la no existencia de una transacción. De existir es emitida la excepción java.rmi.RemoteException si el cliente es remoto, o javax.ejb.EJBException si es un cliente local. Este modo permite asegurar al cliente que este bean no necesita de utilizar transacciones y puede ser utilizado en el desarrollo de sistemas no transaccionales por naturaleza y asegurar que así será utilizado.
Transacciones manejadas por el bean
JTA es un conjunto de interfaces de alto nivel divididas en tres conjuntos: un conjunto de interfaces para administradores de recursos que utilizan el estándar X/Open XA, un conjunto de interfaces para transacciones manejadas por servidores de aplicación, y -la que nos interesa- un conjunto de interfaces para el uso de transacciones por aplicaciones transaccionales.
Al ser una interfaz de alto nivel, JTA necesita de una implementación que debe ser dada por cada proveedor. Esta implementación es realizada a través de la API Java Transaction Service (JTS). Por otra parte, JTS es una implementación en Java del OMG Object Transaction Service (OTS) el cual es un servicio de CORBA para la utilización de transacciones.
JTA contiene la interfaz javax.transaction.UserTransacion que permite controlar las transacciones en un bean. Esta interfaz posee métodos como begin(), commit() y rollback(), que permiten manejar el flujo de la transacción. Este objeto puede ser obtenido por un enterprise bean a través del método getUserTransaction del objeto EJBContext que le entrega el container para su inicialización, o a través de JNDI haciendo un lookup a una dirección definida en el container como por ejemplo java:comp/UserTransaction.
JNDI
Qué es el Query Language
SQL (por sus siglas en inglés Structured Query Language; en español lenguaje de consulta estructurada) es un lenguaje específico del dominio que da acceso a un sistema de gestión de bases de datos relacionales que permite especificar diversos tipos de operaciones en ellos. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como hacer cambios en ellas.
Originalmente basado en el álgebra relacional y en el cálculo relacional, SQL consiste en un lenguaje de definición de datos, un lenguaje de manipulación de datos y un lenguaje de control de datos. El alcance de SQL incluye la inserción de datos, consultas, actualizaciones y borrado, la creación y modificación de esquemas y el control de acceso a los datos. También el SQL a veces se describe como un lenguaje declarativo, también incluye elementos procesales.
Que es una Excepciones en Java
En Java los errores en tiempo de ejecución (cuando se esta ejecutando el programa) se denominan excepciones,
y esto ocurre cuando se produce un error en alguna de las instrucciones
de nuestro programa, como por ejemplo cuando se hace una división entre
cero, cuando un objeto es 'null' y no puede serlo, cuando no se abre
correctamente un fichero, etc. Cuando se produce una excepción se
muestra en la pantalla un mensaje de error y finaliza la ejecución del
programa.
En Java (al igual que en otros lenguajes de programación), existen
mucho tipos de excepciones y enumerar cada uno de ellos seria casi una
labor infinita. En lo referente a las excepciones hay que decir que se
aprenden a base experiencia, de encontrarte con ellas y de saber
solucionarlas.
Cuando en Java se produce una excepción se crear un objeto de una
determina clase (dependiendo del tipo de error que se haya producido),
que mantendrá la información sobre el error producido y nos
proporcionará los métodos necesarios para obtener dicha información.
Comentarios
Publicar un comentario