Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reverse engineer DDL from JPA entities

Tags:

I'm playing around with some JPA stuff, changing the mappings to see how they're supposed to be etc. It's basic experimentation. However I can't find a tool that will simply read my entities and then generate the table schema for me. I tried to find something like this in JBoss tools but nada. Eclipse integration will be a huge plus but i'll take a command line tool or an ant task.

Any ideas?

like image 428
Gaurav Avatar asked Apr 22 '09 22:04

Gaurav


2 Answers

Try adding the following to your persistence.xml

For Hibernate:

To create:

<property name="hibernate.hbm2ddl.auto" value="update"/>

To drop and create:

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

For Toplink:

To create:

<property name="toplink.ddl-generation" value="create-tables"/>

To drop and create:

<property name="toplink.ddl-generation" value="drop-and-create-tables"/>

For EclipseLink:

To create:

<property name="eclipselink.ddl-generation" value="create-tables"/>

To drop and create:

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
like image 184
James McMahon Avatar answered Oct 05 '22 19:10

James McMahon


I don't think there is an universal way of doing this with JPA, you have to directly use the underlying JPA implementation to achieve this.

For Hibernate, there are several possibilities:

  • Use the method duffymo posted earlier, that makes Hibernate update the database schema automatically.
  • If you do not want that, you can use the hbm2ddl tool from Hibernate Tools (note: link sucks, but apparently their home page is a bit broken right now). You can use that to automatically generate database creation scripts from your JPA entities; there are also plugins for Maven and Ant that invoke hbm2ddl automatically.

For EclipseLink (formerly Oracle TopLink, the JPA 2.0 RI) see Using EclipseLink JPA Extensions for Schema Generation. In principle it is very similar to Hibernate, although at first glance I don't see anything that could be used as a stand-alone utility for creating a DB script.

Other JPA implementations (BEA/Oracle Kodo, Apache OpenJPA) probably have their own specific methods of achieving this.

like image 39
andri Avatar answered Oct 05 '22 19:10

andri