lunes, 24 de octubre de 2016

DESARROLLO DE SOFTWARE I


                           DESARROLLO DE SOFTWARE I - NETBEANS JAVA


    I.              TEMA: CONNECTION
     1. CONTENIDO
Definición: el objeto Connection nos proporciona una conexión a una base de datos, para establecer la conexión lo primero que hacemos es crear el Objeto Connection por medio de la propiedad CreateObject de objeto Server: 
<% Set conexion=Server.CreateObject("ADODB.Connection")%>
El objeto Connection representa una conexión HTTP entre la prueba dinámica (el cliente) y el servidor Web. La prueba abre la conexión, aunque tanto la prueba como el servidor Web pueden cerrarla. Se pueden enviar múltiples solicitudes mediante una sola conexión, siempre que esta última permanezca abierta.
Una conexión (sesión) con una base de datos específica. Sentencias SQL se ejecutan y los resultados se devuelven en el contexto de una conexión.
Una base de datos de un objeto de conexión es capaz de proporcionar información que describe sus mesas, su gramática apoyada SQL, sus procedimientos almacenados, las capacidades de esta conexión, y así sucesivamente. Esta información se obtiene con el método getMetaData.
La clase connection proporciona un interfaz eficiente para el acceso a datos y metadatos de una base de datos. Conocer los recursos de ambas para acceso a base de datos es fundamental a la hora de obtener un código transparente al motor de base de datos que utilice la aplicación.  
Para conectarse a cualquier servidor de base de datos hace falta una aplicación que sirva como enlace. A ese tipo de clases se les llama conectores. En el caso de MySQL, debe descargarse de su sitio web. En dicha descarga, se obtiene todo el código fuente de las clases necesarias pero sólo se requiere el archivo mysql-connector-java.jar. Este archivo debe ponerse en la siguiente ruta:
JAVA-HOME]\jre\lib\ext
Crear conexión:Las propiedades fundamentales para crear una conexión son:      
Name:
Es el nombre de la base de datos que queremos abrir. Si no se especifica se creará una base de datos EN MEMORIA.         
 En Mysql si deseamos crear usuarios, cambiar privilegios, que afecten al gestor de base de datos deberemos acceder a la base de datos "mysql".    
Host:
Es la ubicación del servidor de base de datos. En muchas ocasiones será "localhost", pero puede ser también un nombre o una dirección IP. 
Login y Password:
Usuario y clave que definan al usuario que intenta crear la base.  
Type:
Indica el tipo de base de datos al que queremos acceder (mysql, sqlite,etc). 
*Port:
El puerto por el que accederemos a la base de datos. En el caso de mysql el puerto por defecto es 3306. 
Nota: Al configurar una conexión, aplicaciones JDBC deben utilizar el método de conexión apropiado tal como setAutoCommit o setTransactionIsolation. Las aplicaciones no deben invocar comandos SQL directamente para cambiar la configuración de la conexión cuando existe un método de JDBC disponibles. Por defecto, un objeto de conexión se encuentra en modo de confirmación automática, lo que significa que se compromete de forma automática los cambios después de la ejecución de cada instrucción. Si el modo de confirmación automática ha sido desactivada, el método commit se debe llamar de forma explícita con el fin de confirmar los cambios; de lo contrario, no se guardarán los cambios de base de datos.
Un nuevo objeto de conexión creado mediante la API básica de JDBC 2.1 tiene un mapa tipo inicialmente vacío asociado a él. Un usuario puede introducir una asignación personalizada para un UDT en este tipo de mapa. Cuando un UDT se recupera de una fuente de datos con la ResultSet.getObject método, el método getObject comprobará tipo de mapa de la conexión para ver si hay una entrada para ese UDT. Si es así, el método getObject mapeará la UDT a la categoría indicada. Si no hay ninguna entrada, la UDT se asignará mediante el mapeo estándar.
Un usuario puede crear un nuevo tipo de mapa, que es un objeto java.util.Map, hacer una entrada en ella, y pasarlo a los métodos que pueden realizar java.sql asignación personalizada. En este caso, el método utilizará el tipo de mapa dado en lugar de la asociada a la conexión.
Por ejemplo, el siguiente fragmento de código especifica que los atletas de tipo SQL se asignan a los atletas de clase en el lenguaje de programación Java. El fragmento de código recupera el tipo de mapa para el objeto Connection con, inserta la entrada en ella, y selecciona el tipo de mapa con la nueva entrada como tipo de mapa de la conexión.

 java.util.Map map = con.getTypeMap();
 map.put("mySchemaName.ATHLETES", Class.forName("Athletes"));
 con.setTypeMap(map);

Propiedades:
Especifica la referencia a la base de datos con la cual queremos conectar, conteniendo en una cadena de texto la información necesaria para efectuar esa conexión mediante parejas de valores separadas por ";". 
Los valores que podemos asignar son:

Data Source:
DSN=Nombre ODBC de la Base de Datos
Usuario:
UID=Nombre de Usuario
Password:
PWD=Password del usuario para la base de datos




Ejemplo: 
<% conexion.ConnectionString="DSN=MIOdbc;UID=pepe;PWD=1234" %>

Mode 
Especifica los permisos de la conexión.
Algunos de los valores mas habituales que podemos asignar son:
1.    Establece permiso solo de Lectura
2.    Establece permiso solo de Escritura
3.    Establece permiso de Lectura/Escritura
Ejemplo:
<% conexion.Mode=3 %>




Ejemplo: A continuación se presenta un ejemplo:

package ar.com.et3.lab8.ejercicio1.administrador;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* @author Window8
 */
public abstract class AdministradorDeConexiones {  
    public AdministradorDeConexiones() {
    }
    public static Connection getConnection() throws Exception
    {
        // Establece el nombre del driver a utilizar
        String dbDriver = "com.mysql.jdbc.Driver";      
        // Establece la conexion a utilizar contra la base de datos
        String dbConnString = "jdbc:mysql://localhost/6to_ET3";      
        // Establece el usuario de la base de datos
        String dbUser = "root";      
        // Establece la contraseña de la base de datos
        String dbPassword = "";      
        // Establece el driver de conexión
        Class.forName(dbDriver).newInstance();      
        // Retorna la conexión
        return DriverManager.getConnection(dbConnString, dbUser, dbPassword);
    }     }


   2.    RESUMEN
Campos
Modificador y tipo de campo y Descripción
static int TRANSACTION_NONE
Una constante que indica que las transacciones no son compatibles.
static int TRANSACTION_READ_COMMITTED
Una constante que indica que las lecturas sucias se evitan; no repetibles y las lecturas fantasmas puede ocurrir.
static int TRANSACTION_READ_UNCOMMITTED
Una constante que indica que las lecturas sucias, no repetibles y las lecturas fantasmas puede ocurrir.
static int TRANSACTION_REPEATABLE_READ
Una constante que indica que las lecturas sucias y lecturas no repetibles se evitan; lecturas fantasma puede ocurrir.
static int TRANSACTION_SERIALIZABLE
Una constante que indica que las lecturas sucias, no repetibles y las lecturas fantasmas se les impide.

   3.    SUMMARY
Fields
Modifier and Type Field and Description
static int  TRANSACTION_NONE
A constant indicating that transactions are not supported.
static int  TRANSACTION_READ_COMMITTED
A constant indicating that dirty reads are prevented; non-repeatable reads and phantom reads can occur.
static int  TRANSACTION_READ_UNCOMMITTED
A constant indicating that dirty reads, non-repeatable reads and phantom reads can occur.
static int  TRANSACTION_REPEATABLE_READ
A constant indicating that dirty reads and non-repeatable reads are prevented; phantom reads can occur.
static int  TRANSACTION_SERIALIZABLE
A constant indicating that dirty reads, non-repeatable reads and phantom reads are prevented.

    4.    RECOMENDACIONES
   . Para garantizar que las conexiones están siempre cerradas, abrir la conexión en el interior  de un bloque using. Así, asegura que la conexión se cierra automáticamente cuando el código sale del bloque.
  . Si la conexión SqlConnection está fuera de ámbito, no se cerrará. Por lo tanto, es preciso cerrar explícitamente la conexión llamando a Close o Dispose.
  . Cierre y botar son funcionalmente equivalentes. Si el valor de la agrupación de conexiones Pooling se establece en true o yes, la conexión subyacente se devuelve a la agrupación de conexiones.

   5.    CONCLUSIONES
  SqlConnection se utiliza junto con SqlDataAdapter Y sqlCommand para aumentar el rendimiento cuando se conecta a una base de datos de Microsoft SQL Server.
   Cuando se crea una instancia de SqlConnection, todas las propiedades se ajustan a sus valores iniciales.
    Un objeto SqlConnection representa una única sesión con un origen de datos de SQLServer. En el caso de un sistema de bases de datos de cliente y servidor, equivale a una conexión de red al servidor.
   6.    APRECIACIÓN DEL EQUIPO
      Durante la realización de este trabajo aprendimos que una conexión de base de datos es el medio por el cual un servidor de base de datos y su software de cliente se comunican entre sí. El término se utiliza o no el cliente y el servidor están en diferentes máquinas.

   7.    GLOSARIO DE TÉRMINOS
GETMETADATA: Recupera un objeto SQLServer DatabaseMetaData que contiene los metadatos sobre la base de datos para la que este objeto SQLServerConnection representa una conexión.

HOST: Es un ordenador que funciona como el punto de inicio y final de las transferencias de datos. Más comúnmente descrito como el lugar donde reside un sitio web. Un host de Internet tiene una dirección de Internet única (dirección IP) y un nombre de dominio único o nombre de host.
  PORT: un puerto es una interfaz a través de la cual se pueden enviar y recibir los diferentes tipos de datos.
JDBC: Java Database Connectivity es una interfaz de programación de aplicaciones (API) para el lenguaje de programación Java, que define la forma en que un cliente puede acceder a una base de datos.
COMMIT : se refiere a la idea de consignar un conjunto de cambios "tentativos" de forma permanente. Un uso popular es al final de una transacción de base de datos.
API: La interfaz de programación de aplicaciones es el conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
PROTOCOLO SSL: Secure Sockets Layer es un protocolo diseñado para permitir que las aplicaciones para transmitir información de ida y de manera segura hacia atrás. 
MAPEAR: es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y la utilización de una base de datos relacional como motor de persistencia. 
 TRANSACCIÓN: es una interacción con una estructura de datos compleja, compuesta por varios procesos que se han de aplicar uno después del otro.
POOLING: es un término gestión de los recursos que se refiere a la agrupación de recursos a los efectos de maximizar las ventajas y / o minimizar el riesgo

   8.    LINKOGRAFÍA