*김영한님의 JPA 기본편을 기반으로 작성하였습니다. JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예)회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 기본값 타입 자바 기본 타입(int, double) • 래퍼 클래스(Integer, Long) String 임베디드 타입(embedded type, 복합 값 타입): 좌표값 등을 묶어서 값으로 쓰고 싶을 때, x,y좌표를 클래스로 묶어 값처럼 사용 컬렉션 값 타입(coll..
*김영한님의 JPA 기본 강의를 기반으로 작성하였습니다. 프록시: 실제 엔티티가 아닌 가짜 클래스. 실제 클래스를 상속받아 만들어진다. 껍데기는 똑같지만, id, name 등 기본정보만 보유하고 있다. 프록시 객체는 실제 객체의 참조를 보관하고, 프록시 객체 호출 시 프록시 객체는 실제 객체의 메소드 호출. ex) 프록시에서 A 메소드를 호출 -> 실제 객체의 A메소드 호출 member를 조회하는 상황에서 꼭 Team도 불려야 할까? (즉시 로딩) 필요할 때 불러 쓰자( 지연 로딩 ) member 생성시점에서는 member만 select하고, team은 select 하지 않는다. member.getTeam() 등으로 team이 필요한 시점에 DB에 쿼리를 넣어서 가져온다. 이걸 프록시로 처리할 수있다. ..
*김영한님의 JPA 기본 강의를 기반으로 작성하였습니다. [연관관계 매핑 기초] 객체와 RDB 사이에는 패러다임의 차이가 있다. 객체는 "참조"로 연관된 객체를 찾고, 테이블은 "외래 키를 통한 Join"으로 연관된 테이블을 찾는다. 이러한 차이를 기반으로 객체의 참조와 테이블의 연관관계( 외래 키)의 매핑에 대해 파악해야한다. 모델링 시 "객체" 를 중심으로 돌아가게 설계하는 것이 "객체 지향적 설계" 이고, 만약 RDB 테이블에 객체를 맞춰지게 데이터 중심으로 설계하게 되면, 그것을 객체지향적으로 올바르지 못한 설계이다. @JoinColumn은 DB 관점으로 보았을 때, 본인이 외래 키를 관리하며 상대 Table의 PK(Join할 때 사용)를 명시해주는 역할을 한다. mappedBy 역시 특정 관계와..
*김영한 님의 JPA 기본 강의를 기반으로 작성하였습니다. JPQL: SQL 을 추상화하여 사용 가능. 데이터 베이스 SQL 에 종속적이지 않다.( 페이징 처리가 대표적으로 db마다 다른 SQL 문법을 가진다) "엔티티 객체"를 대상으로 쿼리를 날리는 객체 지향 쿼리 SQL: "데이터 베이스 테이블"을 대상으로 쿼리 [영속성 컨텍스트] 엔티티 매니저 & 팩토리 엔티티를 영구히 저장하는 환경. EntityManager.persist(entity); -> 해당 엔티티를 영속성 컨텍스트에 저장하는 것 (실제 DB 공간에 저장 x) 영속성 컨텍스트는 논리적인 개념이다. 엔티티 매니저를 통해 접근하게된다. 엔티티 생명주기 •비영속 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 •영속 영속성 컨텍스트에 관리되는 ..
JSP, Thymeleaf: 서버에서 모든 데이터를 만들어서 브라우저에 전송하는 SSR 방식 요즘은 이런 SSR 방식이 아닌, CSR(Client Side Rendering) 을 사용하고, 점차 하나의 단독적인 애플리케이션으로 동작하는 SPA(Single Page Application)의 형태로 변화 중이다. 따라서 최근의 서버는 클라이언트가 원하는 XML, JSON 데이터를 제공하는 API 서버 방식이 주류이다. [API 서버] 요청받은 데이터만을 제공하는 서버 데이터만을 전달함으로써, 클라이언트 영역이 어떻게 구현되는지 상관 없이 구현할 수 있고, 클라이언트에서 자유롭게 전달 받은 데이터를 사용할 수 있어 유동성이 좋다. 이번 글에선 JSON을 이용하는 API 서버의 구성 방법에 대해 알아보자. AP..
*이번 게시물은 다양한 블로그에서 소스를 가져왔습니다. 이번 글에선 Controller에서 사용되는 Get, Post 방식의 차이점과 @ModelAttribute, @ResponseBody, @RequestParam 과 같은 컨트롤러 영역에서 사용하는 어노테이션 그리고 컨트롤러 영역의 동작 과정 등에 대해 설명하며 Controller Client간의 교류에 대해 설명하겠다. 우선 Get 과 Post 방식의 근본적인 차이점에 대해 알아보자. Get: 파라미터로 Model 사용. url로 정보가 노출된다. Post: RedirectAttribute로 Http의 Body에 정보가 숨겨져서 전달된다. 이번엔 컨트롤러에서 데이터를 전달받는 다양한 방법에 대해 알아보자. PathVariable Ex) Front 단..
이 글은 앞서 포스팅한 아래의 글과 이어지는 글 입니다. https://codenme.tistory.com/58 Spring security란? 스프링 시큐리티를 통한 작업은 크게 2가지로 나눌 수 있다. 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 확인 유저가 codenme.tistory.com [OAuth] 서비스 제공 업체들이 각자 다른 방식으로 로그인하지 않도록 제공하는 공통의 인증 방식. 기존에 사용자와 관리자, 2가지의 ROLE로 유저가 구분되었지만, OAuth를 사용하면, 구글, 네이버 등의 소셜 로그인 서비스를 제공하는 제 3의 인물을 포함해야한다. 나는 Google의 소셜 로그인 서비..
스프링 시큐리티를 통한 작업은 크게 2가지로 나눌 수 있다. 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 확인 유저가 어떠한 것을 요청하면, 해당 유저가 본인이 맞는가? 에 대한 인증을 거친 뒤, 인증(Authentication)을 통해 확인한 유저가 요청한 것을 받을 자격이 있는지 확인하는 인가(Authorization) 를 거친 뒤, 요청한 결과값을 돌려준다. 보통의 필터는 스프링의 빈을 사용할 수 없기 때문에 별도의 클래스를 상속 받아야 하지만, 스프링 시큐리티는 빈과 연동할 수 있는 구조로 설계되어있다. [Authentication: 인증] 스프링 시큐리티 내에서는 Filter Chain이라는..