ORM (Object-relational mapping), also known as O/RM, and O/R mapping is a programming approach for converting data between incompatible type systems.
Many full stack frameworks provide their own database abstraction approaches or ORMs.
Standalone database abstraction layers and ORMs to check out:
There are mainly two main design patterns used in ORMs - Active Record and Data Mapper.
As some articles have pointed out (1, 2, 3), ORM is anti-pattern that violates principles of object-oriented programming.
As an alternative to ORM, there is Pomm. It does not propose an abstraction layer and is dedicated to Postgres making developpers able to code directly in SQL to fetch entities. It matches object/relational impedance by using the projection relational operation in order to hydrate flexible instances. It is particulariry suited to build in-house transactional or reporting applications.
Here are some other useful and updated resources to read or check as well: