&gt; A row is the DBMS&#x27;s model of an entity in the domain. An object is an object-oriented programming language&#x27;s model of an entity in the domain.<p>There&#x27;s why we disagree. I believe the DBMS&#x27;s model shouldn&#x27;t be conflated with the application&#x27;s model. Sometimes the row is an entity in the domain; however consider a normalised data structure, where the entity as the application understands it may span a couple of tables. Or involve data from another source.<p>My understanding is ORMs were originally developed to handle the mapping between domains, and <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Object-relational_impedance_mismatch" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Object-relational_impedance_mi...</a>.<p>DataMappers also shine when working against a legacy database or one that cannot be changed. But ActiveRecord is a heck of a lot simpler to work with.<p>&gt; Modelling the domain should drive both application and database structure<p>I am luke-warm on this coupling; too often it leads to the application structured around the database representation, as you point out.  Sometimes this is sensible (e.g. a data-processing system), but in my experience it comes back to bite later on.<p>I&#x27;m interested to hear your experience - do your application models match the database structure?