F-Lab 66

[F-Lab 페이백 모각코 58일차] 스프링 JPA 영속성 컨텍스트란?

스프링 JPA 영속성 컨텍스트란? 스프링 JPA의 영속성 컨텍스트는 엔터티를 영구 저장하는 환경을 의미합니다. JPA는 데이터베이스와의 통신에서 발생하는 많은 작업과 변환 작업을 담당하며, 이러한 작업들은 대부분 영속성 컨텍스트 내에서 처리됩니다. 영속성 컨텍스트의 주요 특징 및 기능은 다음과 같습니다: 1차 캐시: 영속성 컨텍스트는 내부에 1차 캐시를 가지고 있어서, 데이터베이스에서 데이터를 가져올 때 해당 데이터를 캐시에 저장합니다. 동일한 데이터를 다시 조회하려고 할 때는 캐시에서 가져와서 데이터베이스와의 불필요한 통신을 줄입니다. 영속 상태의 엔터티 관리: 영속성 컨텍스트에 저장된 엔터티는 '영속 상태'에 있습니다. 이 상태의 엔터티는 변경 감지(Dirty Checking) 기능을 통해 엔터티의 ..

[F-Lab 페이백 모각코 57일차] 스프링에서 생성자 주입을 권장하는 이유

스프링에서 생성자 주입을 권장하는 이유 스프링 프레임워크에서 생성자 주입을 권장하는 이유에는 여러 가지가 있습니다. 주요한 이유들은 다음과 같습니다: 불변성(Immutability): 필드 주입이나 세터 주입을 사용하면, 객체가 생성된 후에도 해당 필드의 값이 변경될 가능성이 있습니다. 반면, 생성자 주입을 사용하면 모든 필요한 의존성이 객체 생성 시점에 한 번에 주입되므로, 이후에 변경될 위험이 없습니다. 이러한 불변성은 객체의 안정성을 보장하며, 동시성 이슈를 줄이는 데에도 도움이 됩니다. 의존성 명시적 표현: 생성자의 매개변수로 주입되는 의존성들은 해당 클래스가 정상적으로 동작하기 위해 필요한 의존성들임을 명확히 나타냅니다. 세터나 필드 주입의 경우, 어떤 의존성이 필수적이고 어떤 것이 선택적인지 ..

[F-Lab 페이백 모각코 56일차] (SQL) 관리 구문

DML INSERT: 데이터베이스 테이블에 새로운 레코드를 추가하는 명령어입니다. UPDATE: 데이터베이스 테이블에 있는 기존 레코드를 수정하는 명령어입니다. DELETE: 데이터베이스 테이블에서 레코드를 삭제하는 명령어입니다. MER: 데이터베이스 테이블의 두 개 이상의 레코드를 조인하여 새로운 레코드를 만드는 명령어입니다. TCL: 트랜잭션 제어 언어로, 데이터베이스 트랜잭션을 제어하는 명령어입니다. 트랜잭션의 특징 원자성: 트랜잭션 내의 모든 명령어가 반드시 수행되거나, 모두 수행되지 않아야 합니다. 일관성: 트랜잭션이 실행 전과 실행 후의 상태가 항상 일관성 있어야 합니다. 고립성: 트랜잭션 실행 도중에 다른 트랜잭션의 영향을 받지 않아야 합니다. 지속성: 트랜잭션이 실행을 마친 후에도 그 결과..

[F-Lab 페이백 모각코 53일차] (SQL) 데이터 모델과 SQL

정규화 제 1정규형 제 1정규형은 관계형 데이터베이스에서 중복을 제거하기 위한 정규화 과정 중 첫 번째로, 모든 필드가 원자값(Atomic Value)을 가지도록 분리하는 것을 의미합니다. 제 2정규형 제 2정규형은 데이터베이스에서 관계형 모델이 제 2정규형을 만족하는 상태를 말합니다. 이는 모든 비주요 속성이 주요 속성에 완전 함수적 종속 관계를 가져야 한다는 것을 의미합니다. 제 3정규형 제 3정규형은 데이터베이스에서 중복을 제거하고 모든 테이블이 기본 키를 가져야하는 정규화 과정 중 하나입니다. 주의사항 회원의 배송상태를 조회하려면 여러 번의 JOIN을 해야합니다. 회원 엔터티와 배송 엔터티 간의 관계를 생성하여 성능 개선해야합니다. 정규화를 지나치게 수행하면 성능 저하가 발생할 수 있습니다. 적절..

[F-Lab 페이백 모각코 52일차] (SQL) 데이터 모델링의 이해

데이터 모델의 이해 모델링이란? 데이터베이스의 모델링은 ‘현실 세계를 단순화하여 표현하는 기법’이다 모델링의 특징 추상화 추상화는 복잡하거나 구체적인 것을 단순화하거나 개념화하는 과정을 말합니다. 예를 들어, 예술 작품에서 구체적인 대상을 추상적인 형태로 표현하는 것이 추상화의 예입니다. 단순화 단순화란 복잡한 것을 단순하게 만드는 것을 의미합니다. 명확화 명확화란, 어떤 것을 더욱 분명하게 밝히거나 정확하게 규정하는 것을 의미합니다. 모델링의 세 가지 관점 데이터 관점 "데이터 관점"은 데이터를 다루는 관점을 의미합니다. 데이터를 수집, 분석, 활용하는 등의 과정에서 중요한 역할을 합니다. 프로세스 관점 프로세스 관점은 시스템이나 소프트웨어를 구성하는 작업들을 단계적으로 파악하고 이해하는 것을 의미합니..

[F-Lab 페이백 모각코 51일차] SpringBoot 3 (3.1.2) + SpringDoc ( OAS3)

Swagger를 추가할려고 하니 왠지 잘 안되었다. Swagger 3를 스프링 부트3 에 적용하려다가 실패했다. @Configuration을 선언하고 해당 클래스에 자바설정코드도 코딩해 놓았는데 빌드할때 클래스로드가 되지 않았다. 기존 코드는 게시판을 구현한 것이였는데 그중 코드를 RestAPI로 간단히 바꾸어놓았다. API 클래스에 @RestController 선언해 놓고 기존 컨트롤러 클래스의 자바코드를 약간 RestAPI용으로 약간씩 바꾸어 놓았다. 자바언어로 된 Swagger 설정 파일과 위 변경 사항 그리고 해당 의존성 추가 한 것 외에는 다른 변경상황은 기억나지 않았기 떄문에 1 test completed, 1 failed Caused by: java.lang.ClassNotFoundExcep..

[F-Lab 페이백 모각코 50일차] 프로그래머스 콜라 문제 (Java)

학습목표 콜라 문제 - 프로그래머스 - 자바 TIL 콜라 문제 - 프로그래머스 - 자바 문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1병을 받습니다. ..

[F-Lab 페이백 모각코 49일차] 프로그래머스 코딩테스트 푸드 파이트 대회 (Java)

학습목표 코테 푸드 파이트대회(프로그래머스) - Java TIL 코테 푸드 파이트대회(프로그래머스) 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음..

[F-Lab 페이백 모각코 48일차] (네트워크) 그림으로 배우는 네트워크 원리

그림으로 배우는 네트워크 (NetWork) 원리 Ch.1 네트워크의 기본 네트워크의 전체상을 이해하자 무엇을 위해서 네트워크를 이용할까? 컴퓨터 네트워크: 컴퓨터와 다른 장치들 사이에 데이터를 주고받기 위해 사용하는 네트워크 누가 이용할 수 있는 네트워크인가 사설 네트워크와 인터넷: 사설 네트워크는 조직 내에서 사용되는 네트워크이며, 인터넷은 전 세계적으로 연결된 네트워크 사내 네트워크 구성 LAN, WAN: LAN은 건물 또는 캠퍼스 내에서 컴퓨터와 장치들을 연결하는 네트워크이며, WAN은 지리적으로 떨어진 지역을 연결하는 네트워크 네트워크의 네트워크 인터넷: 전 세계적으로 연결된 대규모 네트워크 무엇이 데이터를 주고받을까? 애플리케이션, 피어투피어 애플리케이션: 애플리케이션은 데이터를 생성하거나 처리..

[F-Lab 페이백 모각코 47일차] (CS) CHAPTER 1 컴퓨터 과학 소개

학습목표 컴퓨터의 기능과 구성을 알아본다. 하드웨어와 소프트웨어의 관계를 알아본다 입력장치, 중앙처리장치, 기억장치, 출력장치의 역할을 알아본다. 시스템 소프트웨어와 응용소프트웨어의 역활을 알아본다. 컴퓨터 과학의 역사와 연구 분야를 알아본다. TIL 컴퓨터 과학 개요 SECTION 1 컴퓨터의 개요 컴퓨터의 기능과 구성 입력 기능: 컴퓨터에 데이터를 전송하는 기능 키보드, 마우스, 스캐너, 마이크 등이 이에 해당 기억 기능: 컴퓨터 내부에서 데이터를 저장하고 유지하는 기능 데이터를 저장하는 주요 장치로는 하드 디스크, USB, SSD 등이 있음 연산 기능: 컴퓨터가 입력받은 정보를 처리하고 결과를 출력하는 기능 중앙처리장치(CPU)가 이 기능을 담당 제어 기능: 다음 실행할 명령어를 결정하고 하드웨어를..