I was wondering if it was possible to generate entities from hibernate mapping file. My ultimate goal is to programmaticaly create a mapping file, and then create the database from it. I know that I can use :
<prop key="hibernate.hbm2ddl.auto">create</prop>
To create database form entities, but is there a way, (without eclipse tool, I need to do it automatically in the application) to generate entities from mapping? (Or even directly database from mapping).
I don't know if other tools can do it, but I though I would use Hibernate because of the cross database compatibility.
Thank you! Guillaume
You can use maven with the help of mojo plugins to generate Java entities by providing your hibernate mapping files.
Here is a sample maven project:
Create your maven project of this structure:
¦pom.xml
¦
+---src
¦ +---main
¦ +---java
¦ +---resources
¦ ¦ hibernate.cfg.xml
¦ ¦
¦ +---hbmFiles
¦ Person.hbm.xml
The hibernate configuration file hibernate.cfg.xml
is placed in YourProject/src/main/java/resources
The mapping files should be placed in resources
or sub-directory of resources
folder.
Contents of Person.hbm.xml
file:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mypackage.Person" table="person">
<id name="id" column="id" type="int"/>
<property name="name" column="name" type="string"/>
</class>
</hibernate-mapping>
Contents of hibernate.cfg.xml
file:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping resource="hbmFiles/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Contents of pom.xml
file:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.hibernate.tutorials</groupId>
<artifactId>MyProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MyProject</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>default</phase>
<goals>
<goal>hbm2java</goal>
</goals>
</execution>
</executions>
<configuration>
<components>
<component>
<name>hbm2java</name>
<implementation>configuration</implementation>
<outputDirectory>generated-sources/hibernate3</outputDirectory>
</component>
</components>
<componentProperties>
<drop>true</drop>
<ejb3>true</ejb3>
<jdk5>true</jdk5>
</componentProperties>
</configuration>
</plugin>
</plugins>
</build>
</project>
The property - ejb3=true
is useful if you need annotations in your generated java entity files. If annotations are not required then you can just remove the line - <ejb3>true</ejb3>
After creating these 3 file, you can run the command:
mvn clean hibernate3:hbm2java
Now maven generates the java entity files at path -
YourProject/generated-sources/hibernate3/..package_mentioned_in_hbm_files../Student.java
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.