본문 바로가기

JPA

SQL을 직접 다룰 때 발생하는 문제점

반응형

자바 ORM 표준 JPA 프로그래밍 책을 읽은 후 그동안 해왔던 작업의 문제점을 꼬집는 저자의 말에 동의하지 않을 수 없었다.

 

JDBC API 또는 mybatis를 사용하여 관계형 데이터베이스를 자바의 객체로 또는 자바의 객체를 관계형 데이터베이스로 입력, 수정, 삭제, 조회 하는 기능을 구현하는데 이러한 CRUD 작업을 모든 테이블마다 반복해야 한다는 점이 상당한 노동력을 요한다.

 

자동화툴이나 프로그램을 작성해 CRUD를 만든다고 해도 SQL에 의존적이게 되어 테이블이 변경되었을 때 모든 SQL과 DAO 로직을 수정해야 하는 수고로움이 발생하고 크기가 점점 방대해질수록 놓칠 수 있는 리스크가 발생해 조회만 정상적으로 되고 수정이나 삭제는 되지않는 경우가 발생한다.

또한 테이블간의 관계를 엔티티 객체에 추가했을 때 엔티티에 연관된 객체가 잘 할당되었는지 신뢰할 수 없는 문제가 발생하기 때문에 분리되어있는 SQL과 DAO를 모두 확인해야만 한다는 단점이 있다.

 

JPA는 이러한 문제를 해결할 수 있다.

개발자는 SQL을 작성하는 것이 아닌 JPA의 API를 사용하면 JPA가 해당 API에 맞는 SQL을 생성해 데이터베이스에 전달한다.

//저장
 
jpa.persist(member);
 
//조회
 
jpa.find(Member.class, memberId);
 
//수정
 
Member member = jpa.find(Member.class, memberId);
 
member.setName("이름변경");
 
//삭제
 
Member member = jpa.find(Member.class, memberId);
 
Team team = member.getTeam();
 

 

반응형

'JPA' 카테고리의 다른 글

동일성과 동등성  (0) 2020.03.10
올바른 객체지향 모델링  (0) 2020.02.28