Posteado por: ummestesimon en: 11/18/2009
¿Qué tal?, ¿como se encuentran?…Espero que bien.
Bien, la entrada pasada, les comenté sobre lo que hace hibernate y las ventajas que lleva al implementarse, haciendo de este framework una buena alternativa a los conflictos OOP/Relacional. Esta entrada será de las más pequeñas, ya que existen 2 maneras, yo solo utilizo una porque me gusta usar XML.
Bueno, ahora podrán preguntarse:
¿Qué necesito para dicha configuración que mencionas?
Bien, primero, como toda conexión con alguna base de datos es necesario configurar (cadena de conexión y driver o conector). En Hibernate esto cambia, porque no se hace embebido en la aplicación.
Ahora puede surgir la duda:
¿Cómo que no va dentro de la aplicación o embebido?
Lo que quiero decir es que Hibernate se configura por medio de archivos, es decir, que un archivo (ya sea xml o properties) contiene la cadena de conexión. Pondré los ejemplos de una configuración común y una configuración de hibernate:
Primero la conexión común:
void configConexion(String user,
————————–String pass,
————————–String servidor,
————————–String puerto,
————————–String dbase){
—–Class.forName(“org.gjt.mm.mysql.Driver”);
—–java.sql.Connection conexion = DriverManager.getConnection(“jdbc:mysql://”+servidor+
—————————————————————————————————-”:”+puerto+
—————————————————————————————————-”/”+dbase,
—————————————————————————————————-user,
—————————————————————————————————-pass);
}
Ahora la conexión con hibernate, primero se necesita un archivo xml, el cual (si solo te conectarás con 1 servidor y a 1 DB, se llamará “hibernate.cfg.xml”:
<?xml version=”1.0″?><!DOCTYPE hibernate-configuration PUBLIC“-//hibernate/hibernate Configuration DTD 3.0//EN”“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”><hibernate-configuration><session-factory><property name=”hibernate.connection.driver_class”>org.gjt.mm.mysql.Driver</property><property name=”hibernate.connection.url”>jdbc:mysql://[un_servidor]/[una_DB]</property><property name=”hibernate.connection.username”>[usuario]</property><property name=”hibernate.connection.password”>[contraseña]</property><property name=”dialect”>org.hibernate.dialect.MySQLDialect</property><property name=”transaction.factory_class”>org.hibernate.transaction.JDBCTransactionFactory</property><mapping resource=”miPack/Libro.hbm.xml” /></session-factory></hibernate-configuration>
Después para iniciar la conexión necesitamos lo siguiente:
void ConnectDataBase(){
—–org.hibernate.SessionFactory sessionFactory =
—–new Configuration().configure().buildSessionFactory();
}
Cómo se puede apreciar el archivo xml es muy detallado y el método solo cuenta con 1 línea, haciendo esto más simple y entendible. Bueno, el xml es muy detallado pero el método cuenta con una clase poco familiar (para los que no han usado hibernate) esta es ‘SessionFactory’, que para no hacer el cuento largo, es la conexión; a lo que recomiendo que si se utilizará más de 1 base de datos, usen otra ‘SessionFactory’ lo cual puede ser realizado pasando el archivo de conexión (puede ser cualquiera con la extensión ‘.cfg.xml’) al método configure:
void ConnectDataBase(){
//Primera conexión, por defecto con el archivo //hibernate.cfg.xml
—–org.hibernate.SessionFactory sessionFactory =
—–new Configuration().configure().buildSessionFactory();
//Segunda conexión, personalizada con el archivo //myown.cfg.xml
—–org.hibernate.SessionFactory sessionFactoryX =
—–new Configuration()
—–.configure(“myown.cfg.xml”)
—–.buildSessionFactory();
}
Y así es como se configura la conexión a la base de datos a través de hibernate.
Si después de esto no hay errores, quiere decir que ya se ha establecido una conexión con la base de datos.
—————————————
En la siguiente entrada hablaré sobre cómo preparar la OOP para realizar queries. Saludos y gracias por sus visitas.
Posteado por: ummestesimon en: 11/13/2009
Hola, ¿cómo están?, espero que muy bien.
Desde hace ya un tiempo (aproximadamente 3 meses), alguien me pidió que le ayudará a desarrollar una aplicación stand-alone para una empresa y resulta que la persona que me pidió apoyo usa la tecnología de hibernate y yo no tenía una idea de qué se trataba hibernate. A lo que acepté, lo único que le pedí fue que me dijera en donde buscar información del tema a lo que -como buen Ingeniero en Sistemas- me respondió diciendo mira lee este libro (Hibernate in Action, si lo tiene original e impreso, si de esos típicos libros en inglés y de mas de 300 páginas), y pues empecé a leer el libro. Sin embargo, algo que me desagradó de ese libro es que el autor dice algo así:
Para hacer funcionar hibernate necesitas el archivo de conexión a tu base de datos (un xml) y crear tus clases; después de esto ya estás apto para tomar ventaja de la tecnología de hibernate.
A lo que, yo iba a mi computadora -ordenador-, hacía los pasos tal y como venían en el dichoso libro y adivinen……¡NO FUNCIONABA!, lo peor es que seguías en el siguiente capítulo y decía algo así:
Pero antes de hacer lo que en el capítulo anterior, es necesario que crees un archivo extra por cada clase.
Con lo que dije:
¡EH, COSAS QUE SON BASE LAS PONEN DESPUÉS DE COSAS QUE SON MÁS AVANZADAS!
Que quede claro que con estás entradas de hibernate no estoy diciendo que ese libro sea malo, simplemente que está algo desordenado y si eres alguien como yo que no tiene tiempo de leerse y comprender todo el libro (ya que además vienen cosas, que si interesantes, pero poco aplicables) para poder hacer su primer ejemplo (nótese que escribí ejemplo, no aplicación) entonces estas entradas son para ti.
Bueno, primero, ¿Qué es Hibernate?:
Hibernate es un framework muy cómodo y útil para realizar conexiones (y a su vez con esto) y consultas (altas, bajas, cambios y lecturas) a bases de datos sin la necesidad de utilizar SQL para todo (bueno, si se utiliza, pero solo para lecturas). Además de un framework que facilita la implementación del paradigma MVC. Hibernate está disponible para Java y .NET.
Ahora, si pues ayuda, pero ¿Qué lo diferencía de una conexión habitual?:
Primero que nada, hay que pensar de otra manera, ya que desde la programación orientada a objetos se han observado que el paradigma SQL y el paradigma orientado a objetos tienen conflictos, ya que un objeto es un tipo de dato, sin embargo SQL no acepta objetos como tales. Por ejemplo tienes 1 clase:
Personas que cuenta con los siguientes atributos:
Y tienes la clase Preferencias:
Como pueden ver, si usamos un manejador de datos basado en SQL, no podemos crear el tipo de datos Preferencias, de tal modo que tendríamos que hacer 2 tablas, 1 para las personas y otra con las preferencias de cada persona, de modo que sería ocupar más disco duro y al momento de hacer consultas más incomodo, debido a que se necesitarían consultas tipo join.
Por otra parte Hibernate lo que propone es que uno pueda guardar sus objetos en la base de datos sin preocuparse por enviar cada propiedad (ya que los envíos de cada propiedad los hace Hibernate).
———————————————–
Bueno, esto es todo por hoy. Ya que ahora se conoce la finalidad de hibernate en la siguiente entrada se hablará sobre los requerimientos de hibernate.
Gracias por sus visitas y hasta luego.
Posteado por: ummestesimon en: 11/13/2009
¿Qué tal como se encuentran?, espero que bien.
Desde hace rato ya, que en una de mis curiosidades que me dan me pregunté:
¿Existirá algo como Windows pero software libre, código abierto, o de menos gratuito?
A lo que pregunté a un profesor de la universidad (hace ya varios meses atrás) y me dijo:
¡Claro!, y es muy bueno, su único problema es que está en fase de ALPHA aún
Así que decidido, me puse a buscar, y me encontré el sitio oficial del proyecto, se trata de un sistema llamado ReactOs, el cual busca tener una compatibilidad binaria con Windows XP (si lo sé, XP ya va para su ataúd, pero, sería un gran logro) haciendo así que todo el mundo tengo de manera legal Windows gratis (ya que sabemos que muchos desde hace mucho tiempo tienen Windows gratis, no precisamente legal, pero gratis)
Si desean saber más sobre reactOs pueden visitar el sitio oficial: http://www.reactos.org/
Les dejo un video para que se den una idea:
Hasta luego y gracias por sus visitas.