Advertising:
Proyecto maven con hibernate
Proyecto maven con Hibernate-core 3.3.1.GA[edit]
Para hacer un proyecto java con Hibernate necesitamos bajarnos varios jar. La distribución de Hibernate trae unos cuantos, pero hay otros que son necesarios y no trae. Una forma rápida de bajarnos los jar necesarios para Hibernate es crear nuestro proyecto maven y añadir en el fichero pom.xml la dependencia de hibernate y de las demás cosas necesarias.
En nuestro pom.xml debemos añadir las siguientes dependencias:
- hibernate-core, el núcleo de hibernate.
- mysql-connector-java o el conector de la base de datos que vayamos a usar. MySQL en este caso.
- slf4j-log4j12 o una implementación de slf4j para nuestro logger favorito. En este caso, log4j.
- javassist una cosa que necesita Hibernate y que no viene con él si ponemos Hibernate en un proyecto Maven.
Con todo esto, las dependencias en nuestro pom.xml quedarían así
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.3.1.GA</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.2</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.4.GA</version> <scope>compile</scope> </dependency>
Es importante hacer coincidir la versión slf4j-log4j12 con la versión de slf4j-api de la que depende hibernate. Esta versión no queda más remedio que obtenerla por ensayo y error. Primero ponemos la dependencia de hibernate y luego, con mvn dependency:tree podemos ver la versión de slf4j-api. Puedes ver que tanto para slf4j-api como para slf4j-log4j se ha elegido la versión 1.5.2
$ mvn dependency:tree [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'dependency'. [INFO] ------------------------------------------------------------------------ [INFO] Building ejemplo-hibernate [INFO] task-segment: [dependency:tree] [INFO] ------------------------------------------------------------------------ [INFO] [dependency:tree] [INFO] com.chuidiang.ejemplos:ejemplo-hibernate:jar:1.0-SNAPSHOT [INFO] +- junit:junit:jar:3.8.1:test [INFO] +- org.hibernate:hibernate-core:jar:3.3.1.GA:compile [INFO] | +- antlr:antlr:jar:2.7.6:compile [INFO] | +- commons-collections:commons-collections:jar:3.1:compile [INFO] | +- dom4j:dom4j:jar:1.6.1:compile [INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile [INFO] | +- javax.transaction:jta:jar:1.1:compile [INFO] | \- org.slf4j:slf4j-api:jar:1.5.2:compile [INFO] +- mysql:mysql-connector-java:jar:5.1.6:compile [INFO] +- org.slf4j:slf4j-log4j12:jar:1.5.2:compile [INFO] | \- log4j:log4j:jar:1.2.14:compile [INFO] \- javassist:javassist:jar:3.4.GA:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8 seconds [INFO] Finished at: Mon Feb 09 21:08:29 CET 2009 [INFO] Final Memory: 9M/19M [INFO] ------------------------------------------------------------------------
Una vez creado nuestro proyecto, con mvn eclipse:eclipse nos bajará las dependencias de internet y creará nuestro proyecto eclipse. Sólo debemos abrir eclipse e importar el proyecto java recién creado, con todas sus dependencias.
Aquí puedes ver el pom.xml completo del Ejemplo sencillo con Hibernate.
Proyecto maven con Hibernate-core 4.1.4.Final[edit]
En esta nueva versión de Hibernate, han cambiado algo las dependencias, por lo que en nuestro pom.xml queda más sencillo
<dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.1.4.Final</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.3.167</version> </dependency> </dependencies>
Vemos que solo es necesaria la versión de Hibernate-core y el del driver de la base de datos que queramos usar (H2 en este caso). El motivo es que según vemos con el comando mvn dependency:tree, Hibernate-core ya trae dependencias de todo lo que necesita
[INFO] [dependency:tree] [INFO] com.chuidiang.ejemplos:EjemplosHibernate:jar:1.0-SNAPSHOT [INFO] +- org.hibernate:hibernate-core:jar:4.1.4.Final:compile [INFO] | +- antlr:antlr:jar:2.7.7:compile [INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile [INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile [INFO] | +- dom4j:dom4j:jar:1.6.1:compile [INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile [INFO] | +- org.javassist:javassist:jar:3.15.0-GA:compile [INFO] | \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile [INFO] \- com.h2database:h2:jar:1.3.167:compile
depende de un jboss-logging, por lo que no parece necesitar ahora slf4j y ya trae la dependencia de javassist, por lo que no teneoms que ponerla aparte.
Proyecto maven con Hibernate-annotations[edit]
Si queremos hacer un proyecto java con Hibernate-annotations, las depdencias que debemos poner en el fichero pom.xml son las siguientes:
- hibernate-annotations
- mysql-connector-java o el conector de la base de datos que vayamos a usar. MySQL en este caso.
- slf4j-log4j12 o una implementación de slf4j para nuestro logger favorito. En este caso, log4j.
- javassist una cosa que necesita Hibernate y que no viene con él si ponemos Hibernate en un proyecto Maven.
y en el pom.xml pondríamos
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.4.0.GA</version> <scope>compile</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.4.GA</version> <scope>compile</scope> </dependency>
Como indicamos en el punto anterior, es importante hacer coincidir la versión de la implementación slf4j-log4j12 (versión 1.5.2 en el ejemplo) con la de slf4j-api que viene dentro de hibernate-annotation.
Aquí puedes ver el pom.xml completo del Ejemplo sencillo con Hibernate-annotations