Object Relational Mapping (ORM) is a technique used in creating a "bridge" between object-oriented programs and, in most cases,
relational databases
.
Put another way, you can see the ORM as the layer that connects
object oriented programming
(OOP) to relational databases.
When interacting with a database using OOP languages, you'll have to perform different operations like creating, reading, updating, and deleting (CRUD) data from a database. By design, you use SQL for performing these operations in relational databases.
While using SQL for this purpose isn't necessarily a bad idea, the ORM and ORM tools help simplify the interaction between relational databases and different OOP languages.
An ORM tool is software designed to help OOP developers interact with relational databases. So instead of creating your own ORM software from scratch, you can make use of these tools.
Here's an example of SQL code that retrieves information about a particular user from a database:
"SELECT id, name, email, country, phone_number FROM users WHERE id = 20"
The code above returns information about a user —
name
,
email
,
country
, and
phone_number
— from a table called
users
. Using the
WHERE
clause, we specified that the information should be from a user with an
id
of 20.
On the other hand, an ORM tool can do the same query as above with simpler methods. That is:
users.GetById(20)
So the code above does the same as the SQL query. Note that every ORM tool is built differently so the methods are never the same, but the general purpose is similar.
ORM tools can generate methods like the one in the last example.
Most OOP languages have a variety of ORM tools that you can choose from. Here are some of the most popular for Java, Python, PHP, and .NET development:
1. Hibernate
Hibernate
enables developers to write data persistent classes following OOP concepts like inheritance, polymorphism, association, composition. Hibernate is highly performant and is also scalable.
2. Apache OpenJPA
Apache OpenJPA
is also a Java persistence tool. It can be used as a stand-alone
POJO
(plain old Java object) persistence layer.
3. EclipseLink
EclipseLink
is an open source Java persistence solution for relational, XML, and database web services.
4. jOOQ
jOOQ
generates Java code from data stored in a database. You can also use this tool to build type safe SQL queries.
5. Oracle TopLink
You can use
Oracle TopLink
to build high-performance applications that store persistent data. The data can be transformed into either relational data or XML elements.
1. Django
Django
is a great tool for building web applications rapidly.
2. web2py
web2py
is an open source full-stack Python framework for building fast, scalable, secure, and data-driven web applications.
3. SQLObject
SQLObject
is an object relational manager that provides an object interface to your database.
4. SQLAlchemy
SQLAlchemy
provides persistence patterns designed for efficient and high-performing database access.
1. Laravel
Laravel
comes with an object relational manager called Eloquent which makes interaction with databases easier.
2. CakePHP
CakePHP
provides two object types: repositories which give you access to a collection of data and entities which represents individual records of data.
3. Qcodo
Qcodo
provides different commands that can be run in the terminal to interact with databases.
4. RedBeanPHP
RedBeanPHP
is a zero config object relational mapper.
1. Entity Framework
Entity Framework
is a multi-database object-database mapper. It supports SQL, SQLite, MySQL, PostgreSQL, and Azure Cosmos DB.
2. NHibernate
NHibernate
is an open source object relational mapper with tons of plugins and tools to make development easier and faster.
3. Dapper
Dapper
is a micro-ORM. It is mainly used to map queries to objects. This tool doesn't do most of the things an ORM tool would do like SQL generation, caching results, lazy loading, and so on.
4. Base One Foundation Component Library (BFC)
BFC
is a framework for creating networked database applications with Visual Studio and DBMS software from Microsoft, Oracle, IBM, Sybase, and MySQL
You can see more ORM tools
here
.
Now let's discuss some of the advantages and disadvantages of using ORM tools.
Here are some of the advantages of using an ORM tool:
-
It speeds up development time for teams.
-
Decreases the cost of development.
-
Handles the logic required to interact with databases.
-
Improves security. ORM tools are built to eliminate the possibility of SQL injection attacks.
-
You write less code when using ORM tools than with SQL.
-
Learning how to use ORM tools can be time consuming.
-
They are likely not going to perform better when very complex queries are involved.
-
ORMs are generally slower than using SQL.
Summary
In this article, we talked about Object Relational Mapping. This is a technique used to connect object oriented programs to relational databases.
We listed some of the popular ORM tools for different programming languages.
We concluded with some of the advantages and disadvantages of using ORM tools. languages.
Happy coding!
freeCodeCamp is a donor-supported tax-exempt 501(c)(3) charity organization (United States Federal Tax Identification Number: 82-0779546)
Our mission: to help people learn to code for free. We accomplish this by creating thousands of videos, articles, and interactive coding lessons - all freely available to the public. We also have thousands of freeCodeCamp study groups around the world.
Donations to freeCodeCamp go toward our education initiatives, and help pay for servers, services, and staff.
You can
make a tax-deductible donation here
.
JS Substring Tutorial
Bubble Sort Algorithm
HTML Background Image
What is Data Science?
SQL Subquery in SELECT
Rename a File in Linux
Git Remove Last Commit
What is a Java Hashmap?
CRUD Operations Defined
Git Push Local to Remote
UX vs UI
VLOOKUP in Excel
Big O Cheatsheet
Git Rename Branch
Excel Pivot Table
What is Alt Text?
HTML Dropdown Menu
Python Reverse List
Compare Arrays in JS
HTML Background Color