When we work with an object-oriented systems, there's a mismatch between the object model and the relational database. RDBMSs represent data in a tabular format whereas object-oriented languages, such as Java or C# represent it as an interconnected graph of objects. Consider the following Java Class with proper constructors and associated public function:
publicclassEmployee{
privateint id; privateString first_name; privateString last_name; privateint salary; publicEmployee(){} publicEmployee(String fname,String lname,int salary){ this.first_name = fname; this.last_name = lname; this.salary = salary; } publicint getId(){ return id; } publicString getFirstName(){ return first_name; } publicString getLastName(){ return last_name; } publicint getSalary(){ return salary; } } Consider above objects need to be stored and retrieved into the following RDBMS table:
create table EMPLOYEE (
id INT NOT NULL auto_increment, first_name VARCHAR(20)default NULL, last_name VARCHAR(20)default NULL, salary INT default NULL, PRIMARY KEY (id) ); First problem, what if we need to modify the design of our database after having developed few pages or our application? Second, Loading and storing objects in a relational database exposes us to the following five mismatch problems.
The Object-Relational Mapping (ORM) is the solution to handle all the above impedance mismatches. |