Programando con Café

Programando con Café es el lugar de encuentro de todos sus tutoriales de programación que usted necesita en diferentes lenguajes de programación y base de datos

martes, julio 24, 2012

JAVA - Manejo de entidades con EJB

1. Entorno


  • NetBeans IDE 7.1.1
  • Glassfish 3.1.2
  • JDK 1.6.
  • Windows 7


2. Introducción


Los EJB permite exponer lógica de negocio para distintas interfaces (Web, Escritorio, Movil)

Se puede exponer bajo dos formas de acceso:

  • Local
  • Remota

Existen también dos formas de compartir la información por EJB

  • Stateless --> Reutiliza la misma instancia, esto quiere decir que la misma instancia lo utiliza todos los clientes.
  • Statefull --> Crea instancias por cada cliente. Esto quiere decir que se genera una instancia por cada cliente que lo llama.


Los estados que puede tener el EJB son

  • Stateless --> Solo tiene inicio y fin.
  • Statefull --> Tiene inicio, pasivo, activo y fin



3. Desarrollo


Para este caso vamos a crear un simple mantenedor para una tabla que se llama producto que esta en derby

3.1.  Primero debemos de crear un proyecto EJB Module en el Netbeans














3.2. Le vamos a poner como nombre MantenedorProducto













3.3. Y que corra en Glassfish













3.4. Creamos dos paquetes, uno para nuestra entidad Producto que vamos a crear (paquete com.programandoconcafe.entidades) y otro donde va estar nuestra lógica (paquete com.programandoconcafe.facade)

















3.5. Luego vamos a crear un clase que sea del tipo "Entity Class"



















3.6 Como nombre le pones Producto
















3.7. Le vamos a decir que esta clase cree la tabla a la cual va hacer referencia y ademas que utilice el datasource de la base de datos Derby que viene con el Netbeans.













3.8. La clase Producto va a tener dos atributos, un atributo que es id y otro que es el nombre. Como ven se están haciendo las notaciones para el mapeo respectivo.



































3.9. Creamos dos clases que son necesarias para el control del EJB. Recordar que los EJB se comunica con los clientes por medio de interfaces.
La primera clase que creamos es FacadeProductoRemote que es una interfaz y es del tipo Remote




















Luego creamos la clase FacadeProductoBean que es la implementación de FacadeProductoRemote. Ha esta clase le vamos a decir que sea Stateless



















El contexto que vamos a usar es "MantenedorProductoPU", ese nombre lo sacamos del archivo persistence.xml que se genero al momento de crear la clase "Producto"

jueves, julio 12, 2012

ORACLE - INICIAR LISTENER Y BD ORACLE 11G CON SCRIPT EN LINUX RED HAT


A continuación les voy a pasar un script en Linux que les puede servir para poder iniciar diferentes bases de datos en Oracle 11G, el siguiente script lo cree para poder iniciar las tres diferentes bases de datos que tenemos en la empresa, pero para el ejemplo tuve que cambiar el nombre de las base de datos.
Quizás la parte más importante del script es la siguiente

echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos02 as sysdba

Con esta sentencia estamos diciendo que ejecute un script SQL, dentro de ese script SQL, solo está el comando “startup” que sirve para iniciar la base de datos. El valor del parámetro $usuarioSys debe ser de un usuario que tenga permiso para iniciar la base de datos, en nuestro caso el usuario “sys” del Oracle y el parámetro $claveBaseDatos02 representa la clave de dicho usuario, este valor lo pedimos al inicio del script con la sentencia.

read -p "Ingrese la clave del usuario SYS del Base02: " claveBaseDatos02

Y finalmente el script valida que ejecutemos todas estas sentencias con el usuario que instalo el Oracle en el sistema operativo, en este caso el usuario se llama “oracle11”, es una buena práctica instalar el Oracle con un usuario diferente que “root”


#!/bin/sh
# ---------SCRIPT ELABORADO POR : HENRY JOE WONG URQUIZA
# ---------Inicia las instancias de la bases de datos 
clear
usuarioConectado=`whoami`
usuarioSys=sys
usuarioValido=oracle11
echo "[LOG INFO]: Recuerda ejecutar estas sentencia con el usuario $usuarioValido y se va a iniciar el LISTENER de forma automatica"
if [ $usuarioConectado == $usuarioValido ]; then
        clear
        read -p "Ingrese la clave del usuario $usuarioSys del Base01: " claveBaseDatos01
        read -p "Ingrese la clave del usuario $usuarioSys del Base02: " claveBaseDatos02
        read -p "Ingrese la clave del usuario $usuarioSys del Base03: " claveBaseDatos03
        echo ""
        echo "OPCIONES PARA INICIAR LAS BASES DE DATOS ORACLE"
        echo "=============================================="
        echo "[1] Iniciar Base01"
        echo "[2] Iniciar Base02"
        echo "[3] Iniciar Base03"
        echo "[4] Iniciar Todos"
        read -p "Eliga una opcion: " opcion
        export ORACLE_HOME=/home/oracle11/app/oracle11/product/11.2.0/dbhome_1
        cd /home/oracle11/app/oracle11/product/11.2.0/dbhome_1/bin
        echo "[LOG INFO]: INICIADO EL LISTENER"
        ./lsnrctl start
echo "[LOG INFO]: LISTENER INICIADO"
        if [ "$opcion" == "1" ]; then
   export ORACLE_SID=BaseDatos01
            echo "[LOG INFO]: Iniciando la base de datos --> $ORACLE_SID"
            echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos02 as sysdba
        elif [ "$opcion" == "2" ];  then
   export ORACLE_SID=BaseDatos02
            echo "[LOG INFO]: Iniciando la base de datos --> $ORACLE_SID"
            echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos03 as sysdba
        elif [ "$opcion" == "3" ];  then
   export ORACLE_SID=BaseDatos03
            echo "[LOG INFO]: Iniciando la base de datos --> $ORACLE_SID"
            echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos01 as sysdba
        elif [ "$opcion" == "4" ];  then
   export ORACLE_SID=BaseDatos01
            echo "[LOG INFO]: Iniciando la base de datos --> $ORACLE_SID"
            echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos02 as sysdba
            export ORACLE_SID=BaseDatos02
            echo "[LOG INFO]: Iniciando la base de datos --> $ORACLE_SID"
            echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos03 as sysdba
            export ORACLE_SID=BaseDatos03
            echo "[LOG INFO]: Iniciando la base de datos --> $ORACLE_SID"
            echo "@/data/hwong/sentenciaStartupOracle.sql" | ./sqlplus $usuarioSys/$claveBaseDatos01 as sysdba
        else
    clear
            echo "[LOG INFO]: Opcion no valida"
    fi
  
else
        echo "[LOG INFO]: Te has conectado con el usuario $usuarioConectado pero debes estar conectado con $usuarioValido"
fi

Un ejemplo de lo que saldría en pantalla es lo siguiente, obviamente tuve que borrar el nombre de las bases de datos.