전체 글

전체 글

    값 타입

    ※ 본문은 김영한 선생님의 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. - Entity 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 - 값 타입 int, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 └> 기본값 타입 (자바 기본 타입, Wrapper 클래스(Integer, Long), String) └> 임베디드 타입 (Embedded Type, 복합 값 타입) └> 컬렉션 값 타입 (Collection Value Type) ▶ 기본값 타입 생명주기를 Entity에 의존 값 타입을 공유하면 안됨 (기본값 타입은 항상 값을 복사할 뿐) Wrapper 클..

    Proxy와 연관관계 관리

    ※ 본문은 김영한 선생님의 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ Proxy Q. Member와 Team의 연관관계가 있을 때, Member만 조회하고 싶은데 굳이 Team도 같이 불러와야만 하는가? em.find() : 데이터베이스를 통해 실제 Entity 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(Proxy) Entity 객체 조회 → Proxy 특징 실제 클래스를 상속받았으므로 실제 클래스와 겉모양이 같음 사용하는 입장에서는 실제 객체와 Proxy 객체를 구분하지 않고 사용해도 됨 Proxy 객체는 실제 객체의 참조(target)를 보관 Proxy 객체를 호출하면 Proxy 객체는 실제 객체의 메소드 호..

    Entity Mapping

    ※ 본문은 김영한 선생님의 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ Entity Mapping의 종류 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn ▶ @Entity @Entity가 붙은 클래스는 JPA가 관리하는 Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 주의사항1. 기본 생성자 필수 (파라미터 없는 public 또는 protected 생성자) 주의사항2. final 클래스, enum, interface, inner 클래스 사용 불가 주의사항3. 저장할 필드에도 final 사용 불가 ※ ..

    영속성 관리

    ※ 본문은 김영한 선생님의 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ★ JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 ▶ 영속성 컨텍스트 JPA를 이해하는 데에 있어서 가장 중요한 용어! "Entity를 영구 저장하는 환경" 논리적 개념으로써, 눈에 보이지 않음 EntityManager를 통해서 영속성 컨텍스트에 접근할 수 있음 ★ entityManager.persist(entity); → 사실 entity를 DB에 저장하는 것이 아니라, 영속성 컨텍스트에 저장하는 것! ※ Entity의 생명주기 - 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관..

    JPA란?

    ※ 본문은 김영한 선생님의 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ 기존 SQL 중심적인 개발의 문제점 관계형 데이터베이스를 사용하게 되면 SQL에 의존적인 개발을 피할 수 없다. 객체 지향이 나오게 된 사상과 관계형 데이터베이스가 나오게 된 사상은 다르기에 패러다임의 불일치가 발생한다. 계층형 아키텍쳐를 설계하기가 까다롭고 어렵다. => 1980년대부터 이어져 온 고민 : 객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수 없을까? ▶ JPA 개념 : Java Persistence API : 자바 진영의 ORM 기술 표준 ※ ORM Object-Relational Mapping (객체 관계 매핑) 객체는 객체대로, 관계형 DB는 관계형 DB대로 ..

    MVC 패턴

    ※ 본문은 김영한 선생님의 인프런 '스프링 MVC 1편' 강의를 듣고 정리한 내용임을 알립니다. Model / View / Controller ▶ Controller : HTTP 요청을 받아서 파라미터를 검증하고 비즈니스 로직을 실행, 그리고 View에 전달할 결과 데이터를 조회해서 Model에 담는다. ▶ Model : View에 출력할 데이터를 담아둔다. : View가 필요한 데이터를 모두 Model에 담아서 전달해주기 때문에 View는 화면을 렌더링하는 일에 집중할 수 있다. ▶ View : Model에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. ※ Service : Controller에 비즈니스 로직을 둘 수도 있지만, 이 경우에는 Controller가 너무 많은 역할을 담당한다. ..

    웹 애플리케이션 이해

    ※ 본문은 김영한 선생님의 인프런 '스프링 MVC 1편' 강의를 듣고 정리한 내용임을 알립니다. ▶ 웹 서버 HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적 HTML, CSS, JS, 이미지, 영상 ex) NGINX, APACHE ▶ 웹 애플리케이션 서버 (WAS) HTTP 기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP, API(JSON), 서블릿, JSP, 스프링 MVC ex) 톰캣, Jetty, Undertow ※ 웹 서버와 웹 애플리케이션 서버(WAS)의 차이 : 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직 : 사실 두 용어의 경계 자체가 모호함 : 자바의 경우, 서블릿 컨테이너 ..

    HTTP 정리

    ※ 본문은 김영한 선생님의 인프런 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 듣고 정리한 내용임을 알립니다. ▶ HTTP의 활용도 : HyperText Transfer Protocol → 지금은 HTTP 메시지에 모든 것을 전송 => HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON 및 XML, 서버 간에 데이터를 주고 받을 때 ▶ HTTP 버전 → TCP : HTTP/1.1, HTTP/2 → UDP : HTTP/3 => 현재 HTTP/1.1을 주로 사용하지만 HTTP/2, HTTP/3의 사용도 점점 증가하고 있다. ▶ HTTP 특징 : 클라이언트 서버 구조 : 무상태 프로토콜(Stateless), 비연결성 : HTTP 메시지를 통해서 통신 : 단순하고 확장 가능 ▶ 클라이언트 ..

    웹 기본

    ※ 본문은 김영한 선생님의 인프런 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 듣고 정리한 내용임을 알립니다. Q. 수많은 복잡한 노드들을 넘어서 어떻게 통신이 넘어가는 것인가? ▶ IP (Internet Protocol) : IP 주소를 부여하고, 지정한 IP 주소에 패킷(Packet)이라는 통신 단위의 데이터를 전달하는 방식 → 한계 ① 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 ② 비신뢰성 : 중간에 패킷이 사라진다면? 패킷이 순서대로 안온다면? ③ 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? ▶ TCP (Transmission Control Protocol, 전송 제어 프로토콜) 연결 지향 - TCP 3 way hand..