자바 객체를 데이터베이스에 그대로 저장할 수 없기에, 우리는 스키마를 만들고, 테이블을 만들어 레코드 하나에 하나의 객체를 풀어 저장합니다.이는 직관적으로 알 수 있지만, 말로 설명하기가 어렵습니다.
왜 이렇게 다를까요? 그 이유는 자바와 데이터베이스의 패러다임, 즉 지향하는 관점이 다르기 때문입니다.
자바는 객체 지향적이며, 데이터베이스는 데이터 중심의 관계지향적입니다.
그렇기 때문에, 우리는 데이터베이스에 자바 객체를 그대로 저장할 수 없습니다.
자바에서는 계층이 존재하며, 이를 통해 상속이 가능합니다. 또한, 객체는 객체를 멤버필드로 가질 수 있습니다. 즉 객체의 참조값 다시말해 객체의 주소값을 가지고 객체에 접근 할 수 있습니다.
그리고 데이터베이스에서 연관 관계일 때는 FK(외래키)를 사용할 뿐, 계층이 존재하지 않습니다. 단순히 각각 데이터 중심으로 테이블이 이루어져 있을 뿐입니다.
여기서 알 수 있듯이, 데이터베이스에서는 연관된 키값을 저장할뿐 레코드 자체를 저장하지 않습니다.
물론, 자바에서 데이터베이스에서처럼 id라는 멤버필드를 만들어서 데이터베이스스럽게 로직을 작성할 수는 있으나, 이를 객체지향적이라 할 수 있을까요?
이러한 관점에서 자바를 자바스럽게 만들기 위한 기술이 ORM입니다. ORM은 데이터베이스에서 저장할 ㅋ대는 자동적으로 DB에 맞게 객체를 풀어 각 필드에맞게 뱐롼하고 가져올 때는 이 필드를 모두 묶어 자바에게 자바 객체로 돌랴누는 ORM입니다!