Ciju points to Data Models as the correct mechanism for creating a complex business object, however Data Models are very limited as they map directly to a single table, cant handle nested variables (i.e. that include lists) and limit the supported data types.
Yes, there is the ability to create a custom persistence class, but again, this may limit your structure simply by the way the class API is structured.
That said, if you are using Enterprise Edition and the embedded forms, then you will probably be best served using data models as you will be able to map form components into the data models relatively easily.
If you are using Community Edition or the engine stand-alone, I suggest you create Pojo's to represent your data model.
If you need to persist these, then map them to database tables using JPA and if you need to interact from a UI, then add custom serializers (e.g. serialize to JSON).
Often how you handle this really depends on the scenario and indeed one size does not fit all.
Likely you will implement in a number of different ways to satisfy your application requirements.