Skip to content

JPA의 장점 #2

@hyejinhong

Description

@hyejinhong

⭐ 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions