전체 글28 JPA 소개 - 3 JPA란 무엇인가? JPA (Java Persistence API) 는 자바 진영의 ORM 기술 표준이다. ORM이란 무엇인가? ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 해결해준다. 예를 들어, 객체를 데이터베이스 저장할 때 INSERT SQL를 직접 작성하는 것이 아니라, ORM 프레임워크에 저장하면 된다. jpa.persist(member)를 사용하여 객체를 저장하면 된다. ORM 프레임워크는 단순히 SQL을 개발자 대신 생성해서 데이터베이스에 전달해주는 것뿐만 아니라 앞서 이야기한 다양한 패러다임 불일치 문제들도 해결해준다. 따라서 객체 측면에서 정교한 .. 2021. 6. 23. JPA 소개 - 2 패러다임의 불일치 관계형 데이터베이스는 데이터 중심으로 구조화되어 있고, 집합적인 사고를 요구한다. 그리고 객체지향에서 이야기하는 추상화, 다형성, 상속 같은 개념이 없다. 객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법도 다르다. -> 객체와 관계형 데이터베이스의 패러다임 불일치 문제라 한다. 예시) 객체 상속 모델 테이블 모델 ∴ DTYPE 칼럼을 사용해서 어떤 자식 테이블과 관계가 있는지 정의 ※ 슈퍼타입 서브타입 관계를 사용하면 객체 상속과 가장 유사한 형태로 테이블을 설계할 수 있다. 객체 모델 코드 abstract class Item { Long id; String name; int price; } class Album extends Item { String .. 2021. 6. 22. JPA 소개 - 1 배경 iBatis, MyBatis 혹은 Spring JDBC Template 같은 SQL Mapper를 사용하면, CRUD 용 SQL은 반복해서 작성해야 한다. -> 비생산적이다. JPA는 반복적인 CRUD SQL을 알아서 처리해주고, 객체 모델링과 관계형 데이터베이스 사이의 차이점도 해결해준다. 실행시점에 자동으로 SQL을 만들어서 실행하는데, JPA 사용자는 SQL을 직접 작성하는 것이 아니라 어떤 SQL이 실행될지 생각만 하면 된다. 즉, 정리하면 CRUD SQL을 작성할 필요가 없다. 조회된 결과를 객체로 매핑하는 작업을 대부분 자동으로 처리해준다. 애플리케이션을 SQL이 아닌 객체 중심으로 개발하니 생산성과 유지보수가 좋아진다. 데이터베이스를 변경( ex. MySQL -> Oracle )하여도 .. 2021. 6. 22. Authentication과 SecurityContextHolder 인증이 된 Authentication 객체는 어떻게 되는가? → SecurityContextHolder 에 들어가서 Application 전반에 걸쳐 사용할 수 있게 된다. AuthenticationManager가 인증을 마친 뒤 Return 받은 Authentication 객체가 언제 SecurityContextHolder에 저장되는가? SecurityContextPersisteneceFilter.class SecurityContext를 Http session에 캐시하여 여러 요청에서 Authentication을 공유하는 필터 SecurityContextRepository를 교체하여 세션을 HTTP session이 아닌 다른 곳에 저장하는 것도 가능하다. SecurityContextPersistenec.. 2021. 6. 3. 이전 1 ··· 3 4 5 6 7 다음