경로 표현식

 .(점)을 찍어 객체 그래프를 탐색하는 것

 

 select m.username -> 상태필드

  from Member m

    join m.team t -> 단일 값 연관 필드

    join m.orders o ->  컬렉션 값 연관 필드

 

>>> 내부적으로 동작 방식이 달라진다.  그래서 이 3가지를 꼭 구분해서 잘 알아야함. 

 

  where t.name = '팀A'

 

상태 필드(state field): 단순히 값을 저장하기 위한 필드  (ex: m.username)

 

연관 필드(asssociation field): 연관관계를 위한 필드

 - 단일 값 연관 필드

@ManyToOne, @OneToOne, 대상이 엔티티 (ex: m.team)

 

- 컬렉션 값 연관 필드

@OneToMany, @ManyToMany, 대상이 컬렉션(ex:m.orders)

 

★경로 표현식 특징

상태필드 : 경로 탐색의 끝, 탐색x

 

단일 값 연관 경로: ★묵시적 내부조인(inner join)발생, 탐색o

 -(실무) 묵시적 내부조인이 발생하게 짜면 안된다!!

 - 성능 튜닝에 지대한 영향을 준다.

 

 

컬렉션 값 연관 경로: 묵시적 내부조인 발생, 탐색x

 - FROM 절에서 명시적 조인을 통해 별칭을 얻으면 별칭을 통해 탐색 가능

 

 select m From Team t join t.members m;

 

 

>>>(영한쌤 팁) 실무에서는 이거 다 별루...  묵시적 조인을 쓰지말자. 그냥 명시적 조인을 쓰자!!

 명시적조인: join 키워드 직접사용

 

[출처]- 인프런 김영한  '자바 ORM 표준 JPA 프로그래밍- 기본편]  강의듣고 정리

 

 

'Java Web > JPA' 카테고리의 다른 글

JPQL 문법(4)  (0) 2022.05.03
JPQL- 페치 조인(fetch join)  (0) 2022.05.02
JPQL문법(2)  (0) 2022.04.27
JPQL문법  (0) 2022.04.24

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

 

1XX : 요청이 수신되어 처리중

2XX : 요청 정상 처리

3XX : 요청을 완료하려면 추가 행동이 필요 (리다이랙트 / 리다이렉션)

4XX : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음

5XX : 서버 오류, 서버가 정상 요청을 처리하지 못함.

 

리다이렉션 이해

3XX 

주문 완료 후 주문 내역 화면으로 이동

제일 많이 사용하는게 PRG : Post/Redirect/Get

 

 일시적인 리다이렉션 (실무에서 엄청 사용)

  리소스의 URI가 일시적으로 변경

  따라서 검색 엔진 등에서 URL을 변경하면 안됨

 

★PRG : Post/Redirect/Get

POST로 주문후에 웹 브라우저를 새로고침하면?   

새로고침은 다시 요청

중복 주문이 될 수 있다

 

>>> POST로 주문후에 새로 고침으로 인한 중복 주문 방지

       POST로 주문후 주문 결과 화면을 GET 메서드로 리다이렉트

       새로고침해도 결과 화면을 GET으로 조회

       중복 주문 대신에 결과 화면만 GET으로 다시 요청

 

>>> PRG 이후 리다이렉트

       URL이 이미 POST -> GET으로 리다이렉트 됨

       새로 고침 해도 GET으로 결과 화면만 조회

 

>>>  이미 많은 애플리케이션 라이브러리들이 302를 기본값으로 사용

 

★ 304 Not Modified  (실무에서 많이 사용)

 캐시를 목적으로 사용

 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬PC에

 저장된 캐시를 재사용한다.(캐시로 리다이렉트 한다.)

 304 응답은 응답에 메시지 바디를 포함하면 안된다. (로컬 캐시를 사용해야 하므로)

 조건부 GET, HEAD 요청시 사용

 

4XX(클라이언트) 대 오류와 5XX(서버) 대 오류를 가르는 차이?

>>> 4XX 오류는 복구 불가능, 5XX 오류는 복구 하면, 수정 가능

 

왠만하면, 5XX 오류를 만들면 안된다.

 

[출처]- 인프런 김영한  '모든 개발자를 위한 HTTP 웹 기본 지식']  강의듣고 정리

'HTTP' 카테고리의 다른 글

HTTP 헤더 - 캐시와 조건부 요청  (0) 2022.05.11
HTTP 헤더  (0) 2022.05.09
HTTP 메서드 활용  (0) 2022.04.27
HTTP_ 메서드  (0) 2022.04.26
HTTP_ 공부 내용 요약(1)  (0) 2022.04.25

조인 (내부조인과 외부조인 _ 좀 더 살펴보기)

 

내부 조인

SELECT m FROM Member m [INNER] JOIN m.team t

 

외부조인

SELECT m FROM Member m LEFT [OUTER] JOIN m.team t

 

세타조인

select count(m) from Member m, Team t where m.username = t.name

 

조인- ON절

 1. 조인 대상 필터링

 예> 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인

JPQL

SELECT m, t FROM Member m, LEFT JOIN m.team t on t.name ='A'

 2. ★연관관계 없는 엔티티 외부조인

 

JPQL 기본 함수

 1. 실무에서 함수를 쓸 일이 많다.

 2. 몇 개 안되는 표준 함수이다.

 

CONCAT (문자더하기)

 

SUBSTRING (문자를 몇번부터 몇번까지 자르기)

 

TRIM

 

LOWER, UPPER

 

LENGTH

 

LOCATE

 

ABS, SQRT, MOD

 

SIZE, INDEX(JPA 용도)

 

사용자 정의 함수 호출

 하이버네이트는 사용전 방언에 추가해야 한다.

   사용하는  DB방언을 상속받고, 사용자 정희 함수를 등록한다.

 select function('group_concat', i.name) from Item i

 

[출처- 인프런 김영한  '자바 ORM 표준 JPA 프로그래밍- 기본편]  강의듣고 정리

'Java Web > JPA' 카테고리의 다른 글

JPQL 문법(4)  (0) 2022.05.03
JPQL- 페치 조인(fetch join)  (0) 2022.05.02
JPQL문법(3)  (0) 2022.05.01
JPQL문법  (0) 2022.04.24

클라이언트에서 서버로 데이터 전송

1) 쿼리 파라미터를 통한 데이터 전송 (ex. GET) / 주로 정렬 필터

    

2) 메시지 바디를 통한 데이터 전송 POST,PUT,PATCH / 회원 가입, 상품주문, 등록, 변경

--------------------------------------------------------------

HTTP API 설계 예시

 

 HTTP API - 컬렉션

  POST 기반등록

   예) 회원관리 API제공

 

  HTTP API - 스토어

   PUT 기반 등록

   예) 정적 컨텐츠 관리, 원격 파일 관리

 

 HTML FORM 사용

   웹 페이지 회원 관리 

   GET, POST만 지원

--------------------------------------------------------------

 회원 관리 시스템 

API 설계 - POST 기반 등록

 

 회원 목록 /members -> GET

 회원 등록 /members -> POST

 회원 조회 /members/{id} ->  GET

 회원 수정 /members/{id} ->  PATCH,PUT, (천하무적) POST

 회원 삭제 /members/{id} -> DELETE

 

>> URI 핵심은 리소스를 식별하는거

>>★ POST방식으로 데이터를 등록을 할 때는 서버에서 리소스 URI

결정하고 만들어준다.  >>> 이러한 형식을 컬렉션(Collection) 이라 한다.

--------------------------------------------------------------

HTML FORM 사용

 GET,POST만 지원

 AJAX같은 기술을 사용해서 해결가능

 

★컨트롤 URI << 실무에서 많이 쓸수밖에 없음  / 동사를 직접 사용

 GET, POST만 지원하므로 제약이 있음

 이런  제약을 해결하기 위해 동사로ㄷ 된 리소스 경로 사용

 POST의 /new, ./edit, /delete가 컨트롤 URI

★ 최대한 리소스라는 개념을 가지고 설계하고, 안될때 대체제로 사용한다

--------------------------------------------------------------

유용한 사이트 : https://restfulapi.net/resource-naming/

 

REST Resource Naming Guide

In REST, having a strong and consistent REST resource naming strategy – will prove one of the best design decisions in the long term.

restfulapi.net

김영한 강사님의 노하우 (인프런 HTTP 강의에 다 있음) 

 

첫번째,리소스를 '미네랄을 캐라' 여기서 캐라는 리소스가 아니다.버린다

미네랄만 가지고 설계를 한다. 회원(member).   

/memebers    컬렉션이기에 복수를 해서 's'

주문이면 /orders

상세는 /orders/?/  

이렇게 했는데도 해결되지 않을때, 컨트롤 URI 시전하기.

 

기준은 컬렉션과 문서를 가지고 최대한 해결하자.GET,POST,PUT,DELETE로 해결한다

이걸로 해결 안 될때, 컨트롤 URI 넣어서 해결한다. 

 

[출처]- 인프런 김영한  '모든 개발자를 위한 HTTP 웹 기본 지식']  강의듣고 정리

 

 

'HTTP' 카테고리의 다른 글

HTTP 헤더 - 캐시와 조건부 요청  (0) 2022.05.11
HTTP 헤더  (0) 2022.05.09
HTTP 상태코드  (0) 2022.04.28
HTTP_ 메서드  (0) 2022.04.26
HTTP_ 공부 내용 요약(1)  (0) 2022.04.25

변수 : 내부에 있는 값을 프로그램이 실행되는 도중에 언제든지 교체할 수 있음.  

 

상수: 한번 설정되면 프로그램이 종료될 때까지 변경되지 않는 데이터

 

자료형: 정수 자료형 int

          실수 자료형 flot. double

          문자 자료형 char

       ★문자열 자료형 String

 

int 와 integer의 차이가 무엇일까?

 int는 변수의 타입이다. 이것은 값이 저장될 공간의 크기와 저장 형식을 정의 한것 (기본형: primitive type)

 integer는 기본형을 객체로 다루기 위해 사용하는 클래스들을 래퍼클래스라고 하는데 

 interger는 int의 래퍼클래스 이다.

 

int: 산술 연산 가능 / null로 초기화 불가

integer: unboxing 하지 않을 경우 산술 연산 불가능 / null값 처리 가능

 *unboxing : wrapper class -> primitive type변환

 

 

연산자 : >,<,==,++   특히, &&와 ll는 AND, OR 연산으로서 조건문과 반복문에서도 많이 사용됨        

 

조건문& 반복문 : 프로그래밍의  논리적 흐름에 있어 가장 중요한 부분

 

기본 입출력:  자바에서는 입력을 받을 때 기본적으로 Scanner 클래스를 가장 많이 활용

                  Scanner클래스는 정수를 입력 받는 nextint(), 실수를 입력 받는 next() 등 디양한 함수 지원

 

> 나동빈 유투브 보고 정리함.

'Java' 카테고리의 다른 글

JVM 이란?  (0) 2022.06.13
자바 예외 계층  (0) 2022.06.06
제네릭(Generic)  (0) 2022.05.29
String과 char의 차이점  (0) 2022.05.09
자바 큰 따옴표 출력, 백슬래시  (0) 2022.04.26

+ Recent posts