I'm participating in the Developing with InterSystems Objects and SQL with Joel Solon. The course is very nice and I will share with you some tips I got during the training. Tips presented in the day 2: 1. You can create persistent classes (classes with a correspondent table in the database to persist class properties). 2. An Persistent class example:
Class dc.Person extends (%Persistent)
{
    Property Name As %String;
    Property BirthDate As %Date;
}
3. When you extends %Persistent, you get %New() to create a new instance in the memory, %Save() to save in the database and %Id() to get the unique ID to the instance in the Database and %OpenId() to load the instance with database values. 4. Persistent classes allow you calls %Deleteid() to delete an instance from the database, %DeleteExtent() to delete all saved objects (delete without where!) and %ValidateObject() to validate data passed before save (validate required, sizes, etc). 5. Persistent classes have %IsModified() to check with the data changed in the memory (see joel tip in the comments) and %Reload() to get these changes. 6. To get possible errors when you try to %Save() or %Delete(): set status = person.%Save(), write status. If success in save will return 1. 7. We can use do $system.Status.DisplayError(status) to see error details. 8. To call persistent class methods do: ##class(dc.Person).%Save(). 9. To call a persistent instance method do: ..Method(). It's the same to refer a properties, do: write ..Name. 10. To remove an object ou variable from program or terminal memory use kill person or set person = "". If you use kill only, all references wiil be removed from memory (not from database, to database use killextent). 11. If you want a utility method to populate test data, extend your persistent class with %Populate and call Populate(number of rows). 12. You can create embedded classes to a persistent class extendind %SerialObject (a persistent class without Id, because is linked with a persistent class). Example:
Class PackageName.ClassName Extends %SerialObject
{
    Property Phone As %String;
    Property Email As %String;
}
13. This serial will be a property into your persistent class:
Class dc.Person extends (%Persistent)
{
    Property Name As %String;
    Property BirthDate As %Date;
    Property Contact As dc.Contact;
}
14. In IRIS Database will be create only one table with Person and Contact properties. 15. You can create Indexes to get uniqueness or to tunning queries. Example: Index NameIndex On Name [Unique]. 16. If you create an index you need to build the index in the Management Portal if table is not empty. 17. To create a constructor method override %OnNew(). This is a callback method called when call %New(). There are other callback methods. 18. IRIS has a great support to JSON. You can load a JSON to a object calling set name = {}.%FromJSON("{""Name"":""Yuri""}"). 19. You can write a JSON from the object executing: name.%ToJSON(). 20. To JSON arrays exists in the IRIS and Caché (thanks @Robert cc.Cemper alert), but only in IRIS we have fomatter and zwrite to JSON. Tomorrow I will publish the day 3. PS.: this is a resume, but there are more content learned in the course.