-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
⭐ JPA의 장점
이전 학습에서 JPA의 장점으로
SQL보다 객체 중심으로 고민할 수 있게 패러다임의 전환이 일어난다는 것을 꼽았습니다.
이 말의 의미에 대해 더 자세히 알아보고자 합니다.
🍰 관계형 데이터베이스와 Java의 패러다임 차이
Java는 객체 지향이고, 관계형 데이터베이스는 데이터 중심으로 구조화 되어있습니다.
기능과 표현방법이 다릅니다.
예를 들어, 학생과 학교라는 데이터가 있다고 생각해봅시다.
관계형 데이터베이스에는 이렇게 데이터가 저장되어 있습니다.
- student (id, name, school_id)
- school (id, name)
student.school_id=school.id이렇게 FK(Foreign Key)로 서로 연관 관계를 매핑하게 됩니다.
두 가지 방법으로 이 데이터베이스를 Java로 구현할 수 있습니다.
[1]
class Student {
int id;
String name;
int schoolId; // FK
}
class School {
int id;
int name;
}그러면 Student 객체에 매핑할 SQL은 아래와 같이 짜야 하는데요.
SELECT student.id, student.name, school.id as school_id FROM student JOIN school ON student.shool_id=school.id이 방법은 먼저 Java가 객체지향적이지 않습니다. 🙅
그리고, 테이블을 조인하는 복잡한 SQL을 써야합니다. 🙅 (지금은 테이블이 2개고 컬럼도 별로 없지만.. 테이블과 컬럼이 더 많아진다고 상상해보세요..)
이런 경우 쿼리문을 쓰는 데에 많은 시간과 노력을 소비해야 합니다.. 🙅
[2]
class Student {
int id;
String name;
School school; // 객체
}
class School {
long id;
String name;
}두 번째 방법은 Java가 지향하는 객체지향으로 코드를 짰습니다.
그럼 이런 경우에는 쿼리문을 이렇게 써야합니다.
SELECT id, name, school_id FROM student;
SELECT id, name FROM school;두 개의 쿼리문을 실행한 후
Student 객체의 Setter를 사용해 School 객체를 넣어주어야 합니다.. 🙅
참고 문헌) https://henrybook.tistory.com/1
https://tony950620.tistory.com/101
sonsy0929sonsy0929
Metadata
Metadata
Assignees
Labels
No labels