JVM

    객체지향 프로그래밍

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 객체지향 프로그래밍 OOP(Object Oriented Programming) 객체지향 프로그래밍 방식은 Class를 정의하여 객체를 생성하여 사용하는 방식이라고 정리할 수도 있다. Class를 정의하는 방식을 통해 우리는 중복된 코드를 줄이고 코드의 재사용성을 높이면서 유지보수가 편리해지는 이점을 얻을 수 있다. 이 같은 객체지향의 효과를 더 높이기 위해 객체지향 3요소를 인지해야 한다. 객체지향(OOP) 3요소 캡슐화 : 값의 보호를 위해 객체의 필드, 메소드를 필요에 의해 감추거나 드러내는 것 다형성 : 동일한 타입을 가진 여러 객체가 같은 속성을 가지는 성질 상속성 : 특정 클래스를 부모 클래스로 지정하여 내용을 물..

    제어문

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 제어문 자바 프로그램을 시작하면 main() 메소드의 시작 중괄호부터 끝 중괄호까지 위에서부터 아래로 실행되는 흐름을 갖는다. 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 제어문이다. 제어문의 종류에는 조건문 과 반복문 이 있다. 조건문에는 if문, switch문 이 있고, 반복문에는 for문, while문, do-while문 이 있다. 제어문 블록이 실행 완료되었을 경우, 다시 제어문 처음으로 돌아갈지, 아니면 제어문 블록을 빠져나와 정상흐름으로 다시 돌아올지는 어떤 제어문을 사용하느냐에 따라 다르다. 제어문이 실행된 후 다시 제어문 처음으로 돌아가 반복하는 전자는 반복문의 경우를 의미한다. ..

    자료형

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 기본 자료형 자료형 / 타입 자료형, 타입은 변수에 저장되는 값의 종류와 범위를 결정짓는 요소이다. 이는 얼만큼 메모리 공간을 쓸 것인지에 대한 선언이기도 하다. 자바의 자료형은 값을 참조하는 기본 타입(primitive type), 객체를 참조하는 참조 타입(reference type), 두가지의 데이터 타입을 가지고 있다. 기본 타입에는 int, float, char, Boolean과 같은 타입들이 있고, 참조 타입에는 String, 배열, enum, 클래스, 인터페이스와 같은 타입들이 있다. 정수 타입 (byte, short, int, long) 정수는 모두 4개의 타입이 있으며 저장할 수 있는 값의 범위가 서로 다르..

    Java 소개

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Java 소개 자바는 컴파일러를 통해 기계어로 변환되는 언어 ※ 인터프리터는 한 줄씩 실행되는 반면 컴파일러는 모든 파일을 기계어로 변환하여 실행하는 구조 -> 대부분의 경우 컴파일 과정을 거치는 언어들이 인터프리터 언어보다 빠름 Java의 특징 이식성이 높은 언어이다. 자바 이전의 언어들은 특정 CPU에서만 작동하거나 특정 OS에 따라 다르게 작성해야 하는 언어들이 대부분이었지만, 자바는 JRE(Java Runtime Environment) 가 설치되어 있는 모든 운영체제에서 실행 가능하다. 객체 지향 언어이다. 자바는 OOP(Object Oriented Programming) 개념을 사용하는 언어이다. 그렇기에 모든 기..

    Querydsl

    ※ 본문은 김영한 선생님의 인프런 '실전! Querydsl' 강의를 듣고 정리한 내용임을 알립니다. ★ Querydsl 설정 관련 - Querydsl 관련 Q파일들은 깃허브에 올리지 않도록 하자. - build.gradle의 Querydsl 설정은 협업이나 여러가지 변동사항이 있을 때 설정이 꼬일 수 있으니 주의하자. ▶ 기본 문법 1. 기본 Q-Type 활용 - Q 클래스 인스턴스를 사용하는 2가지 방법 → 별칭 직접 지정 : QMember qMember = new QMember("m"); → 기본 인스턴스 사용 : QMember qMember = QMember.member; => 같은 테이블을 join하는 경우가 아니라면 기본 인스턴스를 활용하자. 2. 검색 조건 쿼리 where 검색 조건은 .and..

    스프링 데이터 JPA

    ※ 본문은 김영한 선생님의 인프런 '실전! 스프링 데이터 JPA' 강의를 듣고 정리한 내용임을 알립니다. ▶ 스프링 데이터 JPA 공통 인터페이스 JpaRepository 인터페이스 공통 CRUD 제공 제너릭 설정 - 제너릭 타입 T : Entity ID : Entity의 식별자 타입 S : Entity와 그 자식 타입 - 주요 메소드 save(S) : 새로운 Entity는 persist / 이미 있는 Entity는 merge delete(T) : Entity를 하나 삭제함 / 내부에서 em.remove() 호출 findById(ID) : Entity 하나를 조회 / 내부에서 em.find() 호출 getOne(ID) : Entity를 Proxy로 조회 / 내부에서 em.getReference() 호출 ..

    객체지향 쿼리 언어 (JPQL)

    ※ 본문은 김영한 선생님의 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ※ JPA가 지원하는 다양한 쿼리 방법들 JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용 (myBatis, SpringJdbcTemplate) ▶ JPQL (Java Persistence Query Language) : 가장 단순한 조회 방법 1. JPQL이 생긴 이유 JPA를 사용하면 Entity 객체를 중심으로 개발 검색을 할 때도 테이블이 아닌 Entity 객체를 대상으로 검색해야 함 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 불러오기 위해서는 결국 검색 조건이 포함된 SQL 필요 2. SQ..

    값 타입

    ※ 본문은 김영한 선생님의 인프런 '자바 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 객체는 실제 객체의 메소드 호..