JPA
[JPA]JPA를 왜 사용해야 하는가?
JPA를 왜 사용해야 하는가? SQL 중심적인 개발에서 객체 중심으로 개발 생산성 유지보수 패러다임의 불일치 해결 성능 데이터 접근 추상화와 벤더 독립성 표준 생산성 저장 jpa.persist(member) 조회 Member member = jpa.find(memberId) 수정 -> 개꿀 member.setName("변경할 이름") 삭제 jpa.remove(member) 유지보수 기존 필드 변경 시 모든 SQL 수정 JPA 필드만 추가하면 됨, SQL은 JPA가 처리 JPA와 패러다임의 불일치 해결 (관계형 데이터베이스(RDBMS)와 객체의 패러다임의 불일치 해결) JPA와 상속 저장 개발자가 할 일 jpa.persist(album); 나머진 JPA가 처리 INSERT INTO ITEM ... INSE..
[JPA]JPA란?
JPA Java Persistence API 자바 진영의 ORM 기술 표준 ORM Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA는 어플리케이션과 JDBC 사이에서 동작 JPA 동작 - 저장, 조회, 쿼리를 개발자가 만드는게 아니고 JPA가 만들어주는 거임 여기서 중요한건 패러다임의 불일치 해결! JPA는 표준 명세 JPA는 인터페이스의 모음 JPA 2.1 표준 명세를 구현한 3가지 구현체 하이버네이트(대부분 이거 씀), EclipseLink, DataNucleus
[JPA]SQL 중심적인 개발의 문제점
1. 무한 반복, 지루한 코드 CRUD 맨날 하는거 맨날 반복,,, 2. 설계 다 했는데 기획자가 마지막에 연락처 추가해달라 했을 경우 그럼 객체에 연락처 칼럼 넣고, 쿼리들을 한땀한땀 다 수정해야 함 3. 개발자 = SQL 매퍼 4. 객체의 상속 관계를 DB에 밀어 넣을 때 슈퍼타입/서브타입 이라는 관계를 이용해서 어렵게 어렵게 DB에 넣음 여기까진 ㅇㅋ 어떻게든 했어 근데? DB에 데이터를 넣을 때는 쿼리를 2번 작성해야 함. 부모 테이블 한번, 자식 테이블 한번 여기까지도 ㅇㅋ 근데 조회할 때는? 조인 쿼리를 만들고 결과를 생성해서 조회해야 함 -> 점점 복잡함... 하지만 자바 컬렉션을 조회한다고 생각하면 그냥 부모 타입으로도 조회할 수 있고, 그냥 id로 조회할 수 있고 암튼 쉬워짐 ! 5. 객..