본문 바로가기

웹 프로그래밍

(63)
엔티티 매핑 객체와 테이블 매핑: @Entity, @Table @Entity가 붙은 클래스는 JPA가 관리하는 엔티티 -기본 생성자 필수 (@NoArgConstructor 사용하면 편리) -final , enum, interface, inner 클래스 사용 X 데이터 베이스 스키마 자동 생성 -DDL을 애플리케이션 실행 시점에 자동 생성 -데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 -개발용임 (운영에서는 직접 만들어야함) 필드와 컬럼 매핑 -@Column: 컬럼 매핑 -insertable:등록 가능 여부 -updatable:수정 가능 여부 -nullable: not null 조건 -unique: 유니크 제약조건 -columnDefinition: 특정방언에 종속적인 정보 -@Temporal: ..
영속성 관리 영속성 컨텍스트 -엔티티를 영구 저장하는 환경 -논리적인 개념 -엔티티 매니저를 통해서 영속성 컨텍스트에 접근 -엔티티 매니저와 영속성 컨텍스트가 1:1 대응 엔티티의 생명주기 -비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 새로운 형태 -영속(managed): 영속성 컨텍스트에 관리되는 상태 -준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태 -em.detach(): 특정 엔티티만 준영속 상태로 전환 -em.clear(): 영속성 컨텍스트를 완전히 초기화 -em.close(): 영속성 컨텍스트를 종료 -삭제(removed): 삭제된 상태 영속성 컨텍스트의 이점 -1차 캐시(DB가 아니라 먼저 1차 캐시에서 조회) -동일성(identity) 보장(1차 캐시) ..
JPA(Java Persisitence API) JPA -자바 진영의 ORM 기술표준 ORM -Object relational mapping(객체 관계 매핑) -객체는 객체대로 관계형 DB는 관계형 DB로 설계 -ORM 프레임 워크가 중간에서 매핑 -JPA는 애플리케이션과 JDBC사이에서 동작 -JPA는 표준 명세(인터페이스의 모음): 일반적으로 구현체로 하이버네이트를 씀 왜 JPA? -SQL 중심 개발 -> 객체 중심 개발 -생산성 -유지 보수 -패러다임 불일치 해결(객체와 테이블) -성능 -데이터 접근 추상화와 벤더 독립성 JPA와 패러다임 불일치 해결 -1. 상속(JPA가 알아서 join 해줌) -2. 연관관계(객체 안의 객체) -3. 객체 그래프 탐색(엔티티 참조 가능, 신뢰 가능) ※ 엔티티(Entity): JPA가 관리하는 객체 -4. 비교..
HTTP 헤더(2) 캐시 -캐시가 없을때: 데이터가 변경되지 않아도 네트워크를 통해 데이터를 다운 받아야함 -캐시 적용: 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지않고 캐시 저장소에서 바로 꺼낼수 있음 검증 헤더(서버: last-modified)와 조건부 요청(클라이언트: If-modified-since) -캐시 유효시간 초과시 -1.서버에서 기존 데이터를 변경함 -2.기존데이터와 똑같음 -캐시 만료후 기존 데이터를 변경하지 않음 -클라이언트의 데이터와 서버의 데이터가 같다는 사실만 알면 재새용 가능 -> 검증헤더 추가 -304 Not Modified + 헤더 메타 정보만 응답(바디 X) -클라이언트는 캐시의 메타정보를 갱신하고 캐시에 저장되어 있는 데이터 재활용(작은 헤더 정보만 다운로드) -검증헤더:캐시 데이터..
HTTP 헤더(1) HTTP 헤더 용도 HTTP 전송에 필요한 모든 부가정보 HTTP Body -메시지 본문을 통해 표현 데이터 전달 -표현 헤더는 표현 데이터를 해석할수 있는 정보 제공(데이터 유형, 길이, 압축정보 등) -Content-Type: 표현 데이터의 형식 -Content-Encoding: 표현 데이터의 압축 방식 -Content-Language: 표현 데이터의 자연 언어 -Content-Length: 표현 데이터의 길이 -표현헤더는 전송, 응답 둘다 사용 협상(콘텐츠 네고시에이션): 클라이언트가 선호하는 표현 요청 -Accept: 클라이언트가 선호하는 미디어 타입 전달 -Accept-Charset: 클라이언트가 선호하는 문자 인코딩 -Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 -Accep..
HTTP 상태코드 상태코드: 클라이언트가 보낸 요청의 처리상태를 응답에서 알려주는 기능 -1xx(Informational): 요청이 수신되어 처리중 (거의 안씀) -2xx(Successful): 요청 정상 처리 (e.g. 200 OK) -3xx(Redirection): 요청을 완료하려면 추가 행동이 필요 -4xx(Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 -5xx(Server Error): 서버 오류, 서버가 정상요청을 처리하지 못함 2xx: 클라이언트의 요청을 성공적으로 처리 -200 OK -201 Created(POST -> 서버가 URI 생성) -202 Accepted(접수는 되었으나 미완료 e.g. batch) -204 No Content(응답 본문에 보낼 데이터가..
HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송: 데이터 전달 방식은 크게 2가지 -쿼리 파라미터를 통한 데이터 전송(GET, 검색어) -메시지 바디를 통한 데이터 전송 -POST, PUT, PATCH -회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황 1.정적 데이터 조회(이미지, 정적 텍스트 문서): GET 쿼리 없이 조회가능 2.동적 데이터 조회(주로 검색): GET 쿼리 파라미터기반 정렬 필터해서 결과를 동적으로 생성 3.HTML Form을 통한 데이터 전송(회원가입, 데이터 변경등) -폼 테크 -> HTTP 메시지 생성(웹 브라우저) 전송 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded..
HTTP 메서드 API URI 설계시 -리소스의 의미? -회원을 등록하고 수정하고 조회하는게 리소스가 아니라 회원이라는 개념 자체가 리소스 -리소스 식별? -회원이라는 리소스만 식별하면됨 -> 회원 리소스를 URI에 매핑 -어떻게 구별?(리소스는 다 똑같음) -먼저 리소스와 행위를 분리 -중요한 것은 리소스를 식별하는것 -URI는 리소스만 식별(행위 X) -리소스: 회원 -행위: 조회, 등록, 삭제, 변경 -그럼 행위는 어떻게 구분하는가? HTTP 메서드 HTTP 메서드 종류 -GET: 리소스 조회 -POST: 요청 데이터 처리, 주로 등록에 사용 -PUT: 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성 -PATCH: 리소스 부분 변경(수정) -DELETE: 리소스 삭제 GET -리소스 조회 -서버에 전달하고 싶..