All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avaje.ebean.config.NamingConvention Maven / Gradle / Ivy

package com.avaje.ebean.config;

import com.avaje.ebean.config.dbplatform.DatabasePlatform;

/**
 * Defines the naming convention for converting between logical property
 * names/entity names and physical DB column names/table names.
 * 

* The main goal of the naming convention is to reduce the amount of * configuration required in the mapping (especially when mapping between column * and property names). *

*

* Note that if you do not define a NamingConvention the default one will be * used and you can configure it's behaviour via properties. *

*/ public interface NamingConvention { /** * Set the associated DatabasePlaform. *

* This is set after the DatabasePlatform has been associated. *

*

* The purpose of this is to enable NamingConvention to be able to support * database platform specific configuration. *

* * @param databasePlatform * the database platform */ void setDatabasePlatform(DatabasePlatform databasePlatform); /** * Returns the table name for a given Class. *

* This method is always called and should take into account @Table * annotations etc. This means you can choose to override the settings defined * by @Table if you wish. *

* * @param beanClass * the bean class * * @return the table name for the entity class */ TableName getTableName(Class beanClass); /** * Returns the ManyToMany join table name (aka the intersection table). * * @param lhsTable * the left hand side bean table * @param rhsTable * the right hand side bean table * * @return the many to many join table name */ TableName getM2MJoinTableName(TableName lhsTable, TableName rhsTable); /** * Return the column name given the property name. * * @return the column name for a given property */ String getColumnFromProperty(Class beanClass, String propertyName); /** * Return the property name from the column name. *

* This is used to help mapping of raw SQL queries onto bean properties. *

* * @param beanClass * the bean class * @param dbColumnName * the db column name * * @return the property name from the column name */ String getPropertyFromColumn(Class beanClass, String dbColumnName); /** * Return the sequence name given the table name (for DB's that use sequences). *

* Typically you might append "_seq" to the table name as an example. *

* * @param tableName * the table name * * @return the sequence name */ String getSequenceName(String tableName, String pkColumn); /** * Return true if a prefix should be used building a foreign key name. *

* This by default is true and this works well when the primary key column * names are simply "id". In this case a prefix (such as "order" and * "customer" etc) is added to the foreign key column producing "order_id" and * "customer_id". *

*

* This should return false when your primary key columns are the same as the * foreign key columns. For example, when the primary key columns are * "order_id", "cust_id" etc ... and they are the same as the foreign key * column names. *

*/ boolean isUseForeignKeyPrefix(); /** * Load setting from properties. */ void loadFromProperties(PropertiesWrapper properties); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy