티스토리 뷰

1. SQL 중심적인 개발의 문제점

  • 비슷한 SQL문을 무한 반복해서 개발해야 된다. ( 지루한 코드 )
  • 작은 변화가 있으면, 쿼리나 VO/DTO부터 다 고쳐야 한다.
  • SQL에 의존하는 개발을 하게 된다.
  • 애플리케이션은 객체 지향적 언어로 개발을 하지만, SQL은 관계형 데이터 베이스이기에 패러다임의 불일치가 일어난다.
  • + 객체 지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공하지만, 관계형 데이터 베이스에서는 제공하지 않는다.

 

2.  객체와 관계형 데이터 베이스의 차이

  • [1] 상속
  • - 객체 : 상속 관계
  • + 객체에서는 자바 컬렉션을 활용하여 쉽게 저장할 수 있다. ( ex. list.add(하위); )
  • + 객체에서는 조회 또한 쉽게 조회할 수 있다. ( ex. list.get(하위); )
  • - 관계형 데이터 베이스 : 슈퍼타입과 서브타입의 관계 : 
  • + 관계형 데이터 베이스에서 상속관계로 저장하기 위해서는 객체를 분리한 후에, 각각의 테이블에 따로 SQL문을 작성하여 저장해야 한다.
  • + 관계형 데이터 베이스에서는 객체와 다르게 하위(서브타입)을 조회하기 위해서는 상위(슈퍼타입)와 조인을 통해 조회해야 한다. 이렇게 되면 복잡성이 높아지기에 DB에서 저장할 객체는 상속관계를 잘 사용하지 않는다.
  • [2] 연관관계
  • - 객체 : 참조 ( ex. 상위.getId() )
  • - 관계형 데이터 베이스 : 테이블에서 외래키(FK)를 사용 ( ex. JOIN ON 상위.ID = 하위.ID )
  • + 객체 지향적으로 프로그래밍을 하기 위해서는 참조를 통해야 한다.
  • + 즉, JOIN을 통해 두 테이블을 합쳐 객체 모델링을 저장하는 것이 아니라, 참조를 통해 하위객체에서 get을 통해 상위객체로 가서 필드를 가저와야 한다.
  • + 관계형 데이터 베이스를 객체 지향적으로 바꿀 수는 있지만 복잡성이 매우 높아진다.

 

3.  JPA란?

  • Java Persistence API
  • 자바 진영의 ORM 기술의 표준이다.
  • + ORM이란 Object Relational Mapping(객체 관계 매핑)으로 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터 베이스대로 설계한 후 ORM 프레임워크가 중간에서 매핑해주는 기능을 한다.
  • JPA는 Java 어플리케이션과 Java가 DB와 통신하기 위한 JDBC API 사이에서 동작한다.
  • JPA는 패러다임의 불일치를 해결해 준다.
  • JPA는 인터페이스의 모음이다.

 

4. JPA를 왜 사용해야 하는가?

  • SQL 중심적인 개발에서 객체 중심적인 개발을 할 수 있다.
  • 쿼리가 자동으로 만들어지기에 생산성이 향상된다. (**)
  • + ex. 저장( jpa.perisit(member) ),  조회( jpa.find(memberId), 수정( member.setName("변경할 이름") ), 삭제( jpa.remove(member) )
  • 패러다임의 불일치 해결
  • JPA에서는 성능 최적화 기능을 제공한다.
  • (1) 같은 트랜잭션 안에서는 같은 엔티티를 반환하여 조회 성능을 향상한다.
  • (2) 트랜잭션을 commit할 때까지 INSERT SQL을 모아, JDBC BATCH SQL 기능을 사용해서 한번에 SQL을 전송한다. 

 

 

 

 

 

728x90
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항