Difference Between TypeName.make() and TypeName.create


#1

In short:
var x = TypeName.make() creates a local TypeName object in memory (var x).

var y = TypeName.create() creates a local TypeName object in memory (var y) AND persists that object into the underlying TypeName table.

Other notes:
create() will throw an error if an object with the same id already exists in the table. Best to use merge() if you wish to upsert.

make() can be quite handy if you want to strongly/explicitly assign an object to a type. Example that will, in memory, set the variable z equal to a TypeA object that has a reference field pointing to a TypeB instance, as well as create a TypeA record. In the below statement, no TypeB record will be created. A record would need to be added to the TypeB table in a separate statement if it did not already exist in the TypeB table:

var z = TypeA.create(
  id: "id_123",
  name: "name_123",
  typeBReferenceField: TypeB.make({id: "id_of_TypeB_instance"})
)

#2

Relevant thread on merge() vs upsert() and update():