Hibernate NamingStrategy implementation that maintains state between calls

Posted by Robert Petermeier on Stack Overflow See other posts from Stack Overflow or by Robert Petermeier
Published on 2010-03-12T09:05:40Z Indexed on 2010/03/12 9:07 UTC
Read the original article Hit count: 218

Filed under:
|
|
|

Hi,

I'm working on a project where we use Hibernate and JBoss 5.1. We need our entity classes to be mapped to Oracle tables that follow a certain naming convention. I'd like to avoid having to specify each table and column name in annotations. Therefore, I'm currently considering implementing a custom implementation of org.hibernate.cfg.NamingStrategy.

The SQL naming conventions require the name of columns to have a suffix that is equivalent to a prefix of the table name. If there is a table "T100_RESOURCE", the ID column would have to be named "RES_ID_T100".

In order to implement this in a NamingStrategy, the implementation would have to maintain state, i.e. the current class name it is creating the mappings for. It would rely on Hibernate

  • to always call classToTableName() before propertyToColumnName()
  • and to determine all column names by calling propertyToColumnName() before the next call to classToTableName()

Is it safe to do that or are there situations where Hibernate will mix things up? I am not thinking of problems through multiple threads here (which can be solved by keeping the last class name in a ThreadLocal) but also of Hibernate deliberately calling this out of order in certain circumstances. For example Hibernate asking for mappings of three properties of class A, then one of class B, then again more attributes of class A.

© Stack Overflow or respective owner

Related posts about jee

Related posts about hibernate