J-SDAI supports in parallel both, early- and late-binding for application entities. Which one to use depends on the kind of problem to solve. Most applications are written for specific entity types. For all these applications programming in early binding is the proper choice, because it is more simple, more efficient and many errors can be detected at compile time because of the strict type checking. Programming with late binding requires usually to work with dictionary instances and application instances in parallel. Programming in late binding it therefore more complicated and application programs get much longer. Its usage is therefore only recommended for applications which needs to work with arbitrary entity types.
The session entities SdaiSession, SdaiRepository, SdaiModel, SchemaInstance etc. in the jsdai.lang package are not treated as usual entities. Only the specified access and manipulation methods are available. Dictionary and mapping entities are usually only accessed by early binding - even if the late binding is also available (meta-meta level).
Please note that aggregates can never be assigned to an attribute, they can only be created in place. This ensures that aggregates are exclusively used by one attribute.
For every attribute, either explicit, derived or inverse, a getAaa method is available. But only for explicit attributes the modification methods unsetAaa and setAaa are available. While createAaa method is used for attributes of type aggregate only.