Creating Data Classes as Concrete vs Abstract [LSA Data Excellence]
Data Classes created in Dev Studio for your Application data model (Logical Data Model) should be created as Abstract first. Work on the basis that the Physical Data Model (database where the instance is stored, interface the instance is retrieve from / updated to) is likely somehow different to what the Application needs.
Once you refine the Data Pages on your Logical Data Model to implement how the data is persisted, if turns out there is absolutely 100% alignment between your Logical and Physical Data Models, then your Abstract Data Class can be changed to Concrete when Pega is deemed the System of Record for that Class of data. At this point, Key properties are identified, and Lookup & Save logic can be implemented (in Data Pages).
As of Pega 8.4, Classes created from Data Objects created in App Studio are Concrete by default (with no keys), in anticipation of records for these Data Objects being recorded. There is no impact in continuing to use classes marked Concrete for your business data model, Concrete classes behave like Abstract classes until Lookup (Obj-Open) and Save (Obj-Save) operations are performed on their instances.
Discussion on this topic was sought from the LSA Data Excellence (Pega 8.4) webinar conducted in July 2020. The webinar and its full set of discussions that arose from it are available at LSA Data Excellence: Webinar, Questions & Answers.