JPA java code generation

Mohan Narayanaswamy picture Mohan Narayanaswamy · Jan 17, 2009 · Viewed 56.4k times · Source

I am specifically looking for JPA code generation technique

First, what are all the project could generate JPA compliant code? (Eg. HibernateTools)

Second, I would also like to customize the code generation utility, as it has to compliant to our corporate standards.

If not, what are all the framework available to generate java code using reflection? so I can write from scratch.

Note: I used eclipse to generate JPA code and refactor it repeatedly to make it compliant.

Answer

Kariem picture Kariem · Jan 29, 2009

I also have difficulties understanding the question, but I'll try to rephrase:

  • You have a lot of data in a DB and want to access it via JPA
  • You don't want to manually write the classes to access the different DBs/tables
  • Currently all/most of your model classes are generated from within Eclipse
  • These models have JPA annotations
  • The model classes (or the annotations) are not according to corporate standards

When you say "JPA java code generation", I understand generating JPA annotated model classes from a supplied DB connection. Most frameworks often refer to this as reverse engineering.

Now you have two questions:

  1. What code generators can be recommended to generate JPA annotated classes?
  2. Is it possible to customize the output of these frameworks, and in which way?

To answer to the first question:

I really like the Netbeans code generation, especially if you show the results to someone not familiar with JPA.

At the level of customization I can only share the experience I had with Hibernate Tools. Especially for reproducible results, try to use the ant-based tasks. You can easily add some targets to your build and code generation can be done at two levels:

With the templates you should be able to cover most of the corporate standards. Look into the pojo directory of the hibernate-tools package. The easiest way to customize the code generation is to copy and adapt the templates and have them put before the hibernate-tools.jar in the ant task used to create the pojos.

As already pointed out in another comment, it might be difficult to modify the generated code afterwards. I hope the following tips can help you:

  • Try to separate generated and customized source files in different folders.
  • Think about using @MappedSuperclass for classes which you may want to adapt in a manual step.