SerialBlogger Blog de desarrollo y tecnología

twitter → @facu1975 nop, es la plataforma de Appnexus.com :)

Mapeando persistencias de hibernate

Hibernate

Que cosa mas complicada por Dios!

Por lo que conozco de la gente que me lee, y la blogósfera en general, Java no es un lenguaje muy usado, y menos aun sus frameworks asi que voy a contar un poco mi experiencia con esto.

Hibernate es un framework de persistencia para Java

Osea, dicho en palabras entendibles: Se ocupa de toda la comunicacion con la base de datos y lo libra a uno de tener que declarar las consultas SQL.. Como Java es un lenguaje orientado a objetos, con atributos y metodos. El guardar el objeto persona en la base de datos junto a todos sus atributos, se transforma en algo tan sencillo como decir:

getSession().save(persona);

Ahi, estamos llamando al metodo getSession() de Hibernate, y diciendole que guarde o persista a nuestro objeto persona en la base de datos.

Y lo dificil?

Y… cuando uno empieza tiene en una mano, el diagrama de clases de la aplicacion, y en la otra el DER de la base de datos. Hay que explicarle a Hibernate, en que columna y en que tabla, debe guardar cada atributo de cada clase. Esto es lo que se llama un mapping.

No parece muy complicado no? No! Es complicadisimo!

Para una relacion directa no hay ningun problema, ahora cuanto hay Foreign Keys, tablas de relaciones, relaciones uno a muchos, muchos a uno, muchos a muchos… es un caos.

En fin, esto al final fue mas un desahogo del esfuerzo que nos tomo hoy en la oficina hacer andar el mapeo de objetos de nuestra aplicacion que otra cosa, pero sirvio, me siento mas en paz y veo al universo equilibrado nuevamente =D.

Prometo tan pronto tenga un conocimiento mas academico en la materia escribir algo mas pedagogico!

PD: Al subir la foto del articulo no se me rompio Firefox 1.5 =D.

Por dfgonzalez en software 1 Dec


Comentarios

  1. Santiago
    # - 2005-12-05

    Parece una herramienta muy potente… pero no te da miedo perder el dominio directo sobre la base de datos??? delegando esto a esta herramienta?

    Supongo que será puntos de vista. Yo como programador y dba prefiero que MI codigo tenga el acceso sobre la base.

  2. Diego
    # - 2005-12-05

    Mmmm.. si llega a estar mal mapeado algo como mucho no se ejecuta la consulta, pero no se va a descontrolar ni hacer nada raro, seria lo mismo que escribir mal una sentencia de SQL.

    La gran ventaja es que es un layer antes de la persistencia, con lo que en teoria podes cambiar la base de datos tantas veces como quieras, sin necesidad de tocar tu codigo.

  3. Santiago
    # - 2005-12-05

    No cambias tu codigo, pero si cambias la base de datos tambien deberias cambiar el mapeo… por lo qeu de alguna manera, estamos en la misma.

  4. Diego
    # - 2005-12-05

    Mmm… ya a este nivel toco de oido, pero si cambias de por ejemplo, MySQL a MS SQL, la estructura de las bases es la misma, cambian las sentencias, que es de lo que se ocupa Hibernate.

    Ahora si cambias la estructura y si, no queda otra mas que hacer el mapping y muy probablemente debas tocar la logica de negocios, si debes cambiar la estructura donde guardas la informacion seguro que tambien la forma en que la manejas.

  5. Santiago
    # - 2005-12-05

    Siempre y cuando tambien usando SQL standard… hay funciones propietarias de bases de datos. Ademas de los diferentes chequeos de consitencias que algunos motores hacen y otros no…

    En fin… todo depende del contexto.

  6. diego chamba
    # - 2005-12-07

    hola necesito ejercicios de programas en java porgfis en vienmelos

  7. Diego
    # - 2005-12-07

    @diego chamba: Fijate en el site de Sang Shin que tiene de todo.

  8. Pablo Viojo
    # - 2005-12-10

    No se…creo que esto de las capas intermedias en el fondo es casi lo mismo que no tenerlas ya que de todos modos si se cambia algo de las capas inferiores siempre va a haber que hacer modificaciones en las capas intermedias de un modo u otro. Tal vez hay muchas cosas que se puedan encapsular y resolver en dicha capa (como en este caso si se cambia de motor de bd) pero ante cambios más profundos no hay alternativa que meterle mano.
    Otra cosa que es más bien una pregunta ¿Por que todo el mundo tiende a asegurarse posibles cambios de futuro en cuanto a acceso a datos, plataformas, etc, cuando en realidad la mayoria de las aplicaciones (de medianas para arriba) de mantienen en sus condiciones originales por mucho tiempo (incluso usando tecnologías obsoletas) hasta que es reemplazada completamente por una nueva aplicacion?

  9. Diego
    # - 2005-12-10

    Es una muy buena pregunta.. y es cierto hasta ahora no vivi nunca una modificacion sino que siempre se rehace la aplicacion por completo, ja! :P

  10. Diego
    # - 2006-11-13

    Hola nesesito si alguien tiene un ejemplo de un archivo de configuracion del hibernate para mysql.por favor lo mas antes posible gracias

  11. Licona
    # - 2007-03-24

    Alguno de ustedes podria decirme como puedo hacer el mapeo de una relacion muchos a muchos?, la estoy haciendo para un desarrollo pero tengo problemas con las llaves
    Se los agredeceria muchisimo!!
    Salu2!!

  12. Federico Mas
    # - 2007-05-17

    Hola, gente.. los invito a que conozcan FNBOX.com. Les cuento que estoy en la busqueda de DBA´s jr/Ssr y Sr con manejo de MySQL, aquel que tenga experiencia y ganas de trabajar en una empresa con un excelente ambiente de trabajo, con importantes beneficios y con muy buenas condiciones de trabajo solo deben enviarme un CV a federico.mas@fnbox.com Gracias!

Deja tu opinión

Últimas notas

Blogroll

Sponsors