miércoles, 30 de marzo de 2016

Hibernate

CRUD simple Uso de Java, Hibernate y MySQL

Usted puede ver y descargar el código fuente completo de este tutorial de mi cuenta de GitHub .
En este tutorial, vamos a crear una sencilla CRUD (Crear Leer Actualizar Borrar) Aplicación del usuario Management Console utilizando Java, Hibernate y MySQL.
Para este tutorial, necesitaremos las siguientes herramientas: (La versión anterior o posterior debe también funciona).
1. Eclipse IDE para Java EE Desarrolladores (Indigo - Ver. 3.7)
2. MySQL Community Server y MySQL Workbench (GUI de la herramienta)
3. MySQL Connector para Java
4. Hibernate ORM

En primer lugar, vamos a crear la base de datos y la tabla de usuario utilizando las siguientes secuencias de comandos SQL. Copiar y ejecutar este script en el MySQL Workbench (GUI de la herramienta) -> Editor de SQL:
  crear UserDB base de datos;
 utilizar UserDB;
 conceda a todos en UserDB * a 'admin' @ 'localhost' identifica 
mediante "prueba".; 

 CREAR TABLA UserDB.`users` (
   `userid` int (11) NOT NULL AUTO_INCREMENT,
   `firstname` NULL varchar (45) DEFAULT,
   `varchar lastname` (45) DEFAULT NULL,
   `dob` NULL fecha predeterminada,
   `email` NULL varchar (100) DEFAULT,
   PRIMARY KEY ( `userid`)
 ) ENGINE = InnoDB AUTO_INCREMENT = 9 DEFAULT charset = UTF-8 

Ir a eclipsar y crear un nuevo proyecto. Seleccione Archivo-> Nuevo-> Proyecto de Java. Enter "SimpleJava hibernación", como el nombre del proyecto. Acepte todo el valor predeterminado. Haga clic en Finalizar.
Consulte en este directorio del proyecto en caso de que se pierda algo en el camino
structure
Después de crear el proyecto, tenemos que añadir conector MySQL archivo .jar a nuestra trayectoria de la estructura del proyecto. Para ello, haga clic derecho en nuestro proyecto recién creado "SimpleJavaHibernate" y seleccione Propiedades para abrir la ventana Propiedades.
Seleccione Java Build Path en la vista de árbol a la izquierda para abrir la derecha vista lateral en detalle. Haga clic en Añadir JAR externos .. botón para abrir diálogo del navegador de archivos y el punto al conector de MySQL .jar archivo que ha descargado anteriormente.
Por otra parte, tenemos que añadir la biblioteca Hibernate a nuestro proyecto. Haga clic derecho de nuevo el proyecto y seleccione Propiedades -> Java Build Path. Esta vez, haga clic en Agregar biblioteca. Seleccionar biblioteca de usuario de la lista de selección. Haga clic en Biblioteca de usuario. A continuación, haga clic en Nuevo. Enter "hibernación", como el nombre de la biblioteca. Ok. Haga clic en nuestra biblioteca de usuario recién creado y haga clic en Agregar archivo JAR. Seleccione todo el archivo .jar, tanto en la carpeta proporcionada y necesaria que se encuentra dentro de esta estructura de directorios [su hibernación descarga carpeta] -> hibernación-search-4.1.0.CR3-dist-> hibernación-search-4.1.0.CR3-> dist-> lib
Verificar su trayectoria de la estructura para que coincida con la configuración en la imagen siguiente:
build path
Esta es toda la configuración que tenemos que hacer y ahora vamos a llegar al código.
Cree cuatro paquetes en la carpeta src.
  • com.daniel: contiene el método principal como punto de entrada para nuestra aplicación de consola
  • com.daniel.dao: contiene la lógica para el funcionamiento de bases de datos
  • com.daniel.model: contiene el POJO (Plain Old Java Object). Cada clase en este paquete representa la tabla de base de datos. Para este tutorial, sin embargo, sólo tenemos una mesa.
  • com.daniel.util: contiene la clase de base de datos para iniciar la conexión
A continuación, crear una nueva clase Java. en la carpeta com.daniel.model. El nombre de "User.java" e insertar estos códigos siguientes. Cada una de las variables en esta clase representa el campo en la tabla de usuarios en nuestra base de datos.


 
  com.daniel.model paquete;

 java.util.Date importación;

 Usuario public class {

     ID de usuario int privado;
     firstName cadena privada;
     lastName cadena privada;
     Fecha dob privada;
     Cadena de correo electrónico privada;
     public int GetUserID () {
         ID de usuario de regreso;
     }
     pública SetUserID void (int id de usuario) {
         este .userid = ID de usuario;
     }
     Cadena getFirstName pública () {
         volver firstName;
     }
     pública setFirstName vacío (String firstName) {
         este .firstName = firstName;
     }
     Cadena getLastName pública () {
         volver lastName;
     }
     pública setLastName vacío (String lastName) {
         este .lastName = lastName;
     }
     Fecha getDob pública () {
         dob regresar;
     }
     pública setDob vacío (Fecha DOB) {
         este .dob = fecha de nacimiento;
     }
     Cadena getEmail pública () {
         correo electrónico de retorno;
     }
     pública setEmail vacío (correo electrónico String) {
         este .email = correo electrónico;
     }
     @Anular
     public String toString () {
         retorno "de usuario [ID de usuario =" + + 
ID de usuario ", firstName =" + firstName
                 + ", LastName =" + Apellido + ", 
fecha de nacimiento =" + + fecha de nacimiento ", email ="
                 + Correo + "]";
     }    
 } 
Crear una nueva clase en el paquete com.daniel.util y el nombre HibernateUtil.java. Esta clase leerá la configuración en nuestro fichero hibernate.cfg.xml que se ocupa de la conexión de base de datos a nuestro servidor MySQL.
  com.daniel.util paquete;

 org.hibernate.SessionFactory importación;
 org.hibernate.cfg.Configuration importación;

 public class {HibernateUtil
     SessionFactory private static final sessionFactory = buildSessionFactory ();

     estática privada SessionFactory buildSessionFactory () {
         try {
             // Crear la SessionFactory de hibernate.cfg.xml
             volver nueva configuración () configurar () buildSessionFactory ()..;
         } Catch (Throwable ex) {
             // Asegúrese de que se conecte la excepción, ya que puede tragarse
             System.err.println ( "Error en la creación SessionFactory inicial." + Ex);
             arrojar nueva ExceptionInInitializerError (ex);
         }
     }

     public static SessionFactory getSessionFactory () {
         volver sessionFactory;
     }
 } 
Crear el archivo de configuración hibernate.cfg.xml mencionada directamente en la carpeta SimpleJavaHibernate. Ponga la siguiente información en el interior.
  <? Xml version = "1.0" encoding = "UTF-8"?>
 <! DOCTYPE PÚBLICO-configuración de hibernación
  "- // Hibernate / Hibernate configuración DTD 3.0 // EN"
  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 <Hibernate-configuration>
     <Session-factory>
         <! - Configuración de la conexión de base de datos ->
         <Property name = "connection.driver_class"> com.mysql.jdbc.Driver </ property>
         <Property name = "connection.url"> jdbc: mysql: // localhost / UserDB </ property>
         <Property name = "connection.username"> admin </ property>
         <Property name = "connection.password"> prueba </ property>

         <! - De conexiones JDBC (utilizar el built-in) ->
         <Property name = "connection.pool_size"> 1 </ property>

         <! - Dialecto SQL ->
         <Property name = "dialecto"> org.hibernate.dialect.MySQLDialect </ property>

         <! - Habilitar la administración de contexto de sesión automático de Hibernate ->
         <Property name = "current_session_context_class"> hilo </ property>

         <! - Desactivar la caché de segundo nivel ->
         <Property name = "cache.provider_class"> org.hibernate.cache.NoCacheProvider 
</ property>

         <! - Echo toda SQL ejecutada por la salida estándar ->
         <Property name = "show_sql"> true </ property>

         <! - Drop y vuelva a crear el esquema de base en el inicio ->
         <Property name = "hbm2ddl.auto"> actualización </ property>

         <! - Asignación de archivos ->
         <Mapeo de recursos = "user.hbm.xml" />

     </ Session-factory>
 </ Hibernate-configuración> 
Observe que en el interior del archivo, no es un recurso de información sobre la cartografía que apuntan a user.hbm.xml archivo. Por lo tanto, crear un archivo .xml directamente bajo la carpeta SimpleJavaHibernate para mapear nuestra variables con campos en la base de datos de objetos (Plain Old Java POJO). Nombre que user.hbm.xml y escribir el siguiente código dentro de
  <? xml version = "1.0"?>
 <! DOCTYPE PÚBLICA hibernación de mapeo 
 "- // Hibernate / Hibernate Mapping DTD 3.0 // EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 <Hibernate-mapping>
     <Class name = "" com.daniel.model.User tabla = "usuarios">
         <nombre id = "userid" type = columna "int" = "userid">
             <clase generador = "incremento" />
         </ Id>
         <property name = "nombre">
             <nombre de columna = "nombre" />
         </ Property>
         <property name = "Apellido">
             <nombre de columna = "apellido" />
         </ Property>
         <property name = "fecha de nacimiento">
             <column name = "fecha de nacimiento" />
         </ Property>
         <property name = "email">
             <nombre de columna = "email" />
         </ Property>
     </ Class>
 </ Mapeo de Hibernate-> 
A continuación, crear una nueva clase en el paquete com.daniel.dao, nombrarlo UserDao.java. Dao es sinónimo de acceso a datos de objetos. Contiene la lógica de funcionamiento de bases de datos.
  com.daniel.dao paquete;

 java.util.ArrayList importación;
 java.util.List importación;

 org.hibernate.Query importación;
 org.hibernate.Session importación;
 org.hibernate.Transaction importación;

 com.daniel.model.User importación;
 com.daniel.util.HibernateUtil importación;

 UserDao public class {

     public void addUser (usuario del usuario) {
         Transacción RRT = null;
         Session session = HibernateUtil.getSessionFactory () openSession (.);
         try {
             RRT = session.beginTransaction ();
             session.save (usuario);
             session.getTransaction () commit ().;
         } Catch (RuntimeException e) {
             si (RRT! = null) {
                 trns.rollback ();
             }
             e.printStackTrace ();
         } Finally {
             session.flush ();
             session.close ();
         }
     }

     pública deleteUser void (int id de usuario) {
         Transacción RRT = null;
         Session session = HibernateUtil.getSessionFactory () openSession (.);
         try {
             RRT = session.beginTransaction ();
             (. De usuario de clase, new Integer (ID de usuario)) 
user = Usuario (User) Session.load;
             Session.delete (usuario);
             session.getTransaction () commit ().;
         } Catch (RuntimeException e) {
             si (RRT! = null) {
                 trns.rollback ();
             }
             e.printStackTrace ();
         } Finally {
             session.flush ();
             session.close ();
         }
     }

     public void updateUser (usuario del usuario) {
         Transacción RRT = null;
         Session session = HibernateUtil.getSessionFactory () openSession (.);
         try {
             RRT = session.beginTransaction ();
             session.update (usuario);
             session.getTransaction () commit ().;
         } Catch (RuntimeException e) {
             si (RRT! = null) {
                 trns.rollback ();
             }
             e.printStackTrace ();
         } Finally {
             session.flush ();
             session.close ();
         }
     }

     Lista pública de usuario> <getAllUsers () {
         Lista <usuario> usuarios = new ArrayList <usuario> ();
         Transacción RRT = null;
         Session session = HibernateUtil.getSessionFactory () openSession (.);
         try {
             RRT = session.beginTransaction ();
             usuarios = session.createQuery ( "de usuario") .list ();
         } Catch (RuntimeException e) {
             e.printStackTrace ();
         } Finally {
             session.flush ();
             session.close ();
         }
         usuarios de retorno;
     }

     getUserById pública (int id de usuario) El usuario {
         User user = null;
         Transacción RRT = null;
         Session session = HibernateUtil.getSessionFactory () openSession (.);
         try {
             RRT = session.beginTransaction ();
             QueryString cadena = "de usuario donde id =: id";
             consulta consulta = session.createQuery (queryString);
             query.setInteger ( "id", ID de usuario);
             user = (Usuario) query.uniqueResult ();
         } Catch (RuntimeException e) {
             e.printStackTrace ();
         } Finally {
             session.flush ();
             session.close ();
         }
         volver usuario;
     }
 } 
Por último, crear nuestra clase principal de la aplicación dentro del paquete com.daniel y el nombre App.java
  com.daniel paquete;

 java.sql.SQLException importación;
 java.text.ParseException importación;
 java.text.SimpleDateFormat importación;
 java.util.Date importación;

 com.daniel.dao.UserDao importación;
 com.daniel.model.User importación;
 com.daniel.util.DbUtil importación;

 public class {App

     principales argumentos (String []) {public static void
         UserDao DAO = new UserDao ();

         // Añadir nuevo usuario
         User = usuario nuevo usuario ();
         user.setFirstName ( "Daniel");
         user.setLastName ( "NikoJdbc");
         try {
             Fecha dob = new SimpleDateFormat 
( "aaaa-MM-dd") .parse ( "02/01/1986");
             user.setDob (DOB);
         } Catch (ParseException e) {
             e.printStackTrace ();
         }
         user.setEmail ( "daniel@example.com");
         dao.addUser (usuario);
 //
 // // Usuario de actualización
         user.setEmail ( "daniel@updatedJdbc.com");
         user.setUserid (1);
         dao.updateUser (usuario);

         // Borrar usuario
         //dao.deleteUser(2);

         // Obtener todos los usuarios
         para (iter del usuario: dao.getAllUsers ()) {
             . Sistema cabo .println (ITER);
         }

         // Obtener usuario por ID
         . Sistema cabo .println (dao.getUserById (8));

         try {
             DbUtil.getConnection () close ().;
         } Catch (SQLException e) {
             e.printStackTrace ();
         }
     }

 } 
Eso es. Ejecutar el proyecto de Eclipse y ver la salida de la ventana de la consola

No hay comentarios:

Publicar un comentario