# What is an ORM

## What is ORM?

ORM will allow your application to interact with databases in an **object-orientated way**. You can define tables and their relationship using the ORM library and then communicate with database tables.

Your applications will be able to interact with databases in **terms of objects**, where each table will be represented by a model class. These classes will have access to numerous functions from the ORM library and these functions will perform specific database actions like create, read, update, delete, etc.

<figure><img src="https://1414565520-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqIhUroVI5Y8SJZdBlkAj%2Fuploads%2Fej9eM9S3h7Upz4pH9Cdt%2Fimage.png?alt=media&#x26;token=933b0589-97af-452c-b560-2abdd08dc1d4" alt=""><figcaption></figcaption></figure>

### The Object-Relational Impedance Mismatch

Object-Relational Impedance Mismatch' (sometimes called the 'paradigm mismatch') is just a fancy way of saying that object models and relational models do not work very well together.&#x20;

RDBMSs represent data in a tabular format (a spreadsheet is a good visualization for those not familiar with RDBMSs), whereas object-oriented languages, such as C# and Java, represent it as an interconnected graph of objects.&#x20;

Loading and storing graphs of objects using a tabular relational database exposes us to many mismatch problems. These topics are beyond the scope of this discussion, nevertheless you can get a fair idea here:

{% embed url="<https://hibernate.org/orm/what-is-an-orm/>" %}
