Storing data is a hard problem and likely to be a leaky abstractions. "Save my object" is OK until you need to ask questions like how to find such objects, by which attributes. If I update this and another object, do I care that they are done in a single transaction?
An "I JUST WANT IT SAVED" friendly abstraction would be JSON as a value in a key/value store. As a bonus you can choose your consistency/availability trade offs by going "nosql". For example Azure table storage. Nice!
But now what if your object is an invoice with a link to an account. Is than an ID or is the account info embedded in the invoice. Etc. There is a lot of design thought that needs to go into data. You can stop using SQL, Tables or whatever but these problems don't disappear.
ORM allows you to almost forget about these issues for simple CRUD-like tables. And for the start up style SaaS doing a bunch of boilerplate crud stuff (to begin with) something like ActiveRecord saves the day. But anyone using such conveniences should also learn database design, query optimization and such things too.
Storing data is a hard problem and likely to be a leaky abstractions. "Save my object" is OK until you need to ask questions like how to find such objects, by which attributes. If I update this and another object, do I care that they are done in a single transaction?
An "I JUST WANT IT SAVED" friendly abstraction would be JSON as a value in a key/value store. As a bonus you can choose your consistency/availability trade offs by going "nosql". For example Azure table storage. Nice!
But now what if your object is an invoice with a link to an account. Is than an ID or is the account info embedded in the invoice. Etc. There is a lot of design thought that needs to go into data. You can stop using SQL, Tables or whatever but these problems don't disappear.
ORM allows you to almost forget about these issues for simple CRUD-like tables. And for the start up style SaaS doing a bunch of boilerplate crud stuff (to begin with) something like ActiveRecord saves the day. But anyone using such conveniences should also learn database design, query optimization and such things too.