Creating the Implementation Class
There is very little that needs to be done by application developers to create a basic business entity. In addition to the setup of the CI_​MD_​* tables describing the entity and its constraints only an implementation class (or "Impl" for short) needs to be added. In this case a developer added Person_​Impl. The following is a simple example of an "Impl" class for the Person entity.

/**
 * @BusinessEntity
 *   (tableName = CI_PER,
 *    oneToManyCollections  = { @Child( collectionName = names,
 *                                 childTableName = CI_PER_NAME,
 *                                 orderByColumnNames = { SEQ_NUM } )
 *                            }
 *   )
 */
public class Person_Impl
    extends Person_Gen {
    /**
     * @return the UI Display "info" for this person
     */
    public String getInfo() {
        return "PrimaryName: " + getPrimaryName().getInfo();
    }
}
Important parts of the implementation class are described below:
The implementation class name must end with the suffix "_​Impl". For example, if the entity has a name of "person" then the implementation class name of "some.package.Person_​Impl". It also means that the generated business interface will have a name of "some.package.Person".
A Class Annotation which declares:
What table this entity represents
What the owned-child tables are and what they should be called
Other information. Please see the BusinessEntityAnnotation class for more details.
The class extends an abstract superclass having the suffix of "_​Gen". Continuing the example of an entity named "person", the implementation class would extend a not-yet-created abstract superclass named "some.package.Person_​Gen". This superclass is created by the artifact generator based on metadata about the table and contains:
Getter methods for properties including parent objects and collections
The getDTO() and setDTO(...) methods that allow for properties to be changed
Access to standard framework methods like createQuery(...)
Business methods. Any hand coded public methods are automatically exported onto the generated business interface (e.g. "some.package.Person"). Client code can then access the added business method as follows:

 Person aPerson = some logic retrieving a person instance
 String thePersonsInfo = aPerson.getInfo(); 

Constants. Any hand coded public static final variables are automatically exported onto the generated business interface. This will be useful for constants related to the entity.
Having created a new entity, it is likely that validation rules and other behaviors should be added to it. Please see Adding Change Handlers for more information.