JPA
-
JPA를 사용해야 하는 이유JPA 2022. 3. 27. 02:54
JPA를 왜 사용해야하는가? 그 이유를 5가지 정도 알아보자 1. SQL 중심적인 개발에서 객체 중심으로 개발 JPA를 사용하면 마치 자바 컬렉션을 사용하는 것 처럼 데이터를 다룰 수 있다. 2. 생산성 JPA와 CRUD 저장 //Kotlin em.persist(member) 조회 val member = em.find(memberId) 수정 member.name = "변경할 이름" : 수정 시 엔티티의 프로퍼티를 변경하고 어딘가 등록(?) 해줘야 할 것 같은데 JPA는 마치 자바 컬렉션에 데이터를 넣었다 뺐다 하는 것처럼 할 수 있게 해주기 때문에해당 객체 프로퍼티면 변경하면 된다. (어떤 원리로 되는 지는 뒤에 자세히) 삭제 em.remove(member) => 굉장히 간단하다. 3. 유지보수 기존의 ..
-
JPA 소개2JPA 2022. 3. 27. 00:54
JPA 등장까지 역사 -----(EJB 엔티티 빈) ---------------(하이버네이트)--------------------------(JPA)------->(현재) 자바 표준 EJB는 기술이 너무 아마추어적이고 인터페이스를 많이 상속받아야 했다. 그리고 성능도 안좋아서 당시 EJB로부터 벗어나고자 하는 시도가 있었다. 그 후 Gavin King이 오픈 소스인 Hibernate를 만들고 이것이 많이 쓰이자 자바에서는 Gavin King을 데리고 와서 거의 hibernate랑 비슷하게 자바 표준인 JPA를 만들었다. Rod Johnson : Spring 창시자 Gavin King : Hibernate 창시자 JPA는 표준명세 JPA는 인터페이스의 모음이다. JPA 2.1 명세 구현한 3가지 구현체 H..
-
[JPA] JPA 소개1JPA 2022. 3. 25. 00:00
JPA : Java Persistence API 자바 진영의 ORM 기술 표준이다. ORM : Object - Relational Mapping (객체 관계 매핑) 객체는 객체 대로, RDB는 RDB대로 설계. 중간에서 매핑은 ORM 프레임워크가 해준다. 대중적인 언어에는 대부분 ORM 기술 존재한다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. 개발자가 JPA에게 명령하면 JPA가 JDBC API 사용해서 SQL 호출한다. JPA 동작 - 저장 MemberDAO Object Object를 JPA에게 PERSIST 메서드를 통해 JPA에게 넘기면 JPA는 Entity 분석 INSERT SQL 생성 패러다임 불일치 해결 을 수행하고 JDBC API 사용해서 DB에 INSERT SQL을 날린다. JP..
-
객체와 관계형 데이터베이스의 차이JPA 2022. 3. 24. 22:48
객체와 관계형 데이터베이스의 차이는 크게 4가지 정도 정리할 수 있다. 1. 상속, 2. 연관관계 3. 객체 그래프 탐색, 4. 비교하기 1. 상속 관계형 DB에서 객체의 상속 관계와 그나마 비슷한 것은 Table의 슈퍼타입 서브타입 논리모델이다. Problem] 객체를 분해해서 저장하기 때문에 슈퍼타입 테이블과 서브타입 테이블 JOIN 결과에 값을 채워넣고 반환 후 조회하는 과정을 거쳐야 한다. 자바 컬렉션에 저장한다면? -> list.add(객체) 조회한다면? -> list.get(객체) 객체는 부모타입으로 조회 후 다형성을 활용하여 사용할 수도 있다. //Kotlin val item1: Child = list.get(childId) val item2: Parent = list.get(childId)..
-
SQL 중심적인 개발의 문제점JPA 2022. 3. 24. 21:33
아직 DB 세계의 헤게모니(패권)은 관계형 DB에게 있다. ex) Oracle, MySQL ...etc 현재 많은 개발이 객체 지향형 언어로 이루어지므로 지금은 객체를 관계형 DB에 관리해야하는 시대임. Problem1] SQL 중심의 개발을 하게 된다. : 반복된 코드 많음, CRUD 쿼리들로 차있음. (요즘엔 MyBatis나 스프링 제공 Jdbc Template이 있긴 하지만.) =>SQL 의존적인 개발을 피하기 어렵다. Problem2] 패러다임의 불일치 객체지향언어의 패러다임 : 필드와 메서드를 묶어 캡슐화 해서 쓰는것이 목표이다. 관계형 데이터베이스(RDB)의 패러다임 : 데이터를 잘 정규화해서 보관하는 것이 목표이다. 객체를 보관하는 다양한 저장소 RDB, NoSQL, File, OODB 등 ..