wallymathieu / assertfail

https://assertfail.gewalli.se
MIT License
2 stars 2 forks source link

Comparison of stateless and stateful db mapping #44

Open wallymathieu opened 5 years ago

wallymathieu commented 5 years ago

Is there a historical view we can find?

Are SQL type provider unique type of DB mapper?

https://stackoverflow.com/questions/37644957/what-is-the-difference-between-dal-dto-and-dao-in-a-3-tier-architecture-style-i/37751345

wallymathieu commented 5 years ago

Then there is https://maetl.net/talks/rise-and-fall-of-orm

wallymathieu commented 5 years ago

http://blogs.tedneward.com/post/the-vietnam-of-computer-science/

automated O/R mapping tool, such as TopLink, Hibernate / NHibernate, or Gentle.NET

or

relational-oriented tools, such as JDBC or ADO.NET

wallymathieu commented 5 years ago

In Haskell you have esqueleto inspired by squeryl also opaleye that looks like more Haskell oriented but with similar focus.

wallymathieu commented 5 years ago

We see some trends, trying to hide SQL (and make it fit OO or procedural patterns) vs trying to expose SQL in the host language. Active records in ruby and EF in c# is nice when that's sort of what you want and need. For performance reasons it can make a lot of sense to skip the abstractions and use raw SQL + result mapper.

Perhaps we see one strain of evolution as : JDBC or ADO.NET -> Dapper style -> Squeryl or typed SQL style I.e. SQL oriented and then adapting that into the host language

Another strain of evolution is the active records pattern.

DataSets -> deprecated ActiveRecord -> ? Seems to be prevalent in ruby/python world still

A more common strain of evolution is the POCO ORM patterns as seen with

XML mapping edmx or NHibernate -> Entity framework core/NHibernate style

While also noting that the relationships are not in time order.

wallymathieu commented 2 years ago

Ruby on Rails mentions active records: https://guides.rubyonrails.org/active_record_basics.html . Perhaps rails embrace of this pattern is what makes rails appropriate for smallish applications. Angular feels sort of like Rails in the browser. I'm unsure if there is anything more formal to say around this?