전체 글

우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
스프링 핵심 원리 - 기본편2 아래 글은 김영한님의 인프런 강의를 참고해서 만들었습니다. 1. 싱글톤 컨테이너 1.1 웹 애플리케이션과 싱글톤 기존 환경에서는 고객 요청이 들어올때마다 새로운 객체를 반환한다. → 비효율적 싱글톤으로 작성이 필요하다. 1.2 싱글톤 패턴 클래스의 인스턴스가 딱 1개가 생성되는 것을 보장하는 디자인 패턴 만드는 방법 static영역에 객체를 미리 하나 생성해 둔다. 이 객체 인스턴스가 필요하면 getter로 조회를 한다. ← 항상 같은 객체 반환 생성자를 private으로 막아서 외부에서 new 키워드로 생성되지 않게 한다. 싱글톤 패턴의 문제점 싱글톤 패턴을 구현하는 코드가 많다. 의존관계에서 클라이언트가 구체 클래스에 의존 → DIP 위반 OCP 위반할 가능성이 높다. ..
· ORM/JPA
이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다. 1. 객체지향 쿼리 언어 1.1 JPQL JPA에서 SQL을 추상화한 객체 지향 쿼리 언어 SQL과 문법과 유사 테이블이 아닌 엔티티 객체를 대상으로 쿼리 검색 조건이 포함된 SQL을 사용해서 필요한 데이터만 DB에서 가져올 수 있음 1.2 Criteria 자바 코드로 JPQL 작성 가능 JPA 공식 기능 너무 복잡하고 실용성이 없다. 1.3 QueryDSL 오픈소스 자바 코드로 JPQL 작성 가능 → 컴파일 시점에 문법 오류 발견 동적 쿼리 작성 편리 단순하고 쉬움 실무 사용 권장 1.4 네이티브 SQL JPA가 제공하는 SQL을 직접 사용하는 기능 2. JPQL(Java Persistence Query Language) - 기본문법 객체..
· ORM/JPA
이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다. 1. 기본값 타입 1.1 JPA 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적이 가능 값 타입 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 추적 불가 1.2 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 임베디드 타입(복합 값 타입) 컬렉션 값 타입 1.3 기본값 타입 생명주기가 엔티티에 의존됨 공유X 자바 기본 타입(primitive type)은 절대 공유X → 값을 복사하여 사용 래퍼 클래스나 String 같은 클래스는 공유는 가능하지만 변경X 2. 임베디드 타입 내장 타입으로도 불..
1. 객체지향언어 1.1 객체지향언어 기존의 프로그래밍 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태 주요 특징 코드의 재사용성이 높다. 코드의 관리가 용이하다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 2. 클래스와 객체 2.1 클래스와 객체의 정의와 용도 클래스의 정의 : 객체를 정의해 놓은 것을 의미 클래스의 용도 : 객체를 생성하는데 사용 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름 유형의 객체 : 책상, 의자, 자동차 등과 같은 사물 무형의 객체 : 수학공식, 프로그램 에러와 같은 논리나 개념 2.2 객체와 인스턴스 인스턴스화 : 클래스로부터 객체를 만드는 과정 인스턴스 : 클래스로부터 만들어진 객체 인스턴스와 객체..
· ORM/JPA
이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다. 1. 프록시 가짜 엔티티로써 실제 클래스를 상속 받아서 만들어 진다. → 겉 모양이 같음(== 대신에 instanceof 사용) em.find() vs em.getReference() em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 1.1 프록시 특징 프록시 객체는 실제 객체의 참조(target)를 보관 호출시 실제 객체의 메소드 호출 처음 사용할 때 한번만 초기화 → target을 통해서 실제 엔티티에 접근이 가능, 실제 엔티티가 되는것X 영속성 컨텍스트에 찾는 엔티티가 이미 존재하면, 실제 엔티티 객체를 반환 단, getRef..
1. 배열(array) 1.1 배열(array)이란? 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 1.2 배열의 생성 int[] score; // int형 배열 선언(배열을 다루기 위한 참조변수 선언) score = new int[5]; // 배열을 생성(실제 저장공간을 생성) ///////////////////////////////////// int[] score = new int[5];// 위와 같은 문장 1.3 배열의 길이와 인덱스 인덱스의 범위는 0부터 '배열길이-1'까지 배열의 길이는 0도 포함된다. ex) int[] arr = new int[0]; 배열의 길이를 변경하는 법 : 더 큰 배열 생성, 기존 배열의 내용을 새로운 배열에 복사 배열이름.length : 배열..
1. 조건문 - if, switch 1.1 if문 if (조건식) { // 조건식이 참일 때 수행될 문장 } 1.2 if-else문 if (조건식) { // 조건식이 참일 때 수행될 문장 } else { // 조건식이 거짓일 때 수행될 문장 } 1.3 if-else if문 if (조건식1) { // 조건식1의 연살결과가 참일 때 수행될 문장 } else if (조건식2) { // 조건식2의 연산결과가 참일 때 수행될 문장들을 적는다. } else { // else블럭은 생략 가능하다. // 위의 어느 조건식도 만족하지 않을 때 수행될 문장을 적는다. } 1.4 중첩 if문 if (조건식1) { // 조건식1의 연산결과과 true일 때 수행될 문장들을 적는다. if (조건식2) { // 조건식1과 조건식2..
· ORM/JPA
이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다. 1. 상속관계 매핑 관계형 데이터베이스는 상속 관계X → 슈퍼타입 - 서브타입 관계가 상속과 유사 즉, 상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것을 의미한다. 1.1 슈퍼타입 서브타입 관계 모델링 방법 @Inheritance(strategy = InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name = "DTYPE") : 조상 클래스에 붙이는 어노테이션으로, 사용하면 DTYPE 테이블이 생성되고, 자식 클래스의 이름으로 등록된다. @Discri..
쿠엔크
기러기는 기록기록