Introduction to Object Relational Mapping

1

2

3

Object Relational Impedance Mismatch

4

Object Relational Impedance Mismatch

	class Customer {
		Long id
		String name // how many characters long could this be?
	}
	mysql> describe customer;
	+----------------+--------------+------+-----+---------+
	| Field          | Type         | Null | Key | Default |
	+----------------+--------------+------+-----+---------+
	| id             | bigint(20)   | NO   | PRI | NULL    |
	| name           | varchar(255) | NO   |     | NULL    |
	+----------------+--------------+------+-----+---------+
5

Object Relational Impedance Mismatch

6

impedance mismatch

http://www.flickr.com/photos/jeffsand/3871415191

7

Why

8

It's changing

9

ORM Persistence patterns

	class Customer { // domain class
		Long id
		String name
		CustomerDTO buildDto(){...}
	}

	class CustomerDto { // data transfer object
		Long id
		String name
	}
	
	class CustomerService { // persistence logic
		void save(CustomerDto){....}
		CustomerDto read(Long id){....}
	}
10

ORM Persistence patterns

	class Customer { // domain class
		Long id
		String name
	}

	class CustomerDao { // data access object
		void save(CustomerDao){....}
		CustomerDao read(Long id){....}
	}
11

ORM Persistence patterns

	class Customer { // domain class
		Long id
		String name

		void save(){....}
		Customer read(Long id){....}
	}
12

ORM Frameworks (just to name a few)

13

References

Creative Commons License  Mike Hugo, Piragua Consulting, Inc.