[hibernate-dev] Constraint naming in HBM2DDL schema export

Max Rydahl Andersen max.andersen at redhat.com
Fri Oct 31 11:41:34 EDT 2008


These should be on the existing NamingStrategy, not Dialect.

They also needs to obey length limits on constraints - many dbs does not  
allow so long ones.

It is not currently being implemented so feel free to contribute a patch  
(most likely for 3.4 since it will break/change API)

/max


> Hi,
>
> some time ago I added the following feature to the Hibernate Core:
>
> Automated naming of the constraint types in the hbm2ddl schema export  
> (naming scheme in brackets)
>
>   - Primary Key Constraints (PK_<TABLENAME><IDX>)
>   - Unique Constraints (UK_<TABLENAME><IDX>_<COLUMNNAME><IDX>)
>   - Check Constraints (<CT>_<TABLENAME><IDX>_<COLUMNNAME><IDX>)
>   - Foreign Key Constraints (FK_<TABLENAME><IDX>_<COLUMNNAME><IDX>)
>
>   <CT> for unique constraints is one of:
>
>     - NN for Not Null Constraints
>     - CK for other Check Constraints
>  <IDX> is an index that is needed if the table or
>   column name has to be shortened because of a maximal
>   length of the constraint name in the database.
>
> At the moment, I have implemented it in the following way:
>
>   - The constraint names are generated in the dialect.
>   - Constraint naming can be turned on and off in the
>     config file (persistence.xml).
>   - Via the config file you can specify a character
>     that is removed from the table and column names to
>     improve the constraint name length utilization,
>     e.g. COMPANY_DETAILS can be reduced to COMPANYDETAILS
>   - The maximal constraint name length can be specified
>     in the config file as well.
>
> That way, it is possible to identify the reason for a constraint  
> violation much more easier. Additionally, you have not to be at the  
> mercy of the database constraint naming schema.
>
> Is something similar implemented at the moment by anyone?
>
> I would be pleased if you like to add this functionality to the  
> hibernate sources.
>
> In this case I would adapt my implementation:
>
>   - Create an own class e.g. DefaultConstraintNamingStrategy,
>     according to the table and column NamingStrategy ...
>   - ... that can be overwritten and plugged in via the
>     config file.
> What do you think about this idea?
>
> Best regards,
> Jürgen



-- 
/max



More information about the hibernate-dev mailing list