| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- C programming
- 이것이 자바다
- 메모리구조
- stream
- coding test
- JSON
- 혼자 공부하는 C언어
- 윤성우 열혈자료구조
- buffer
- Serialization
- list 컬렉션
- Selection Sorting
- s
- insertion sort
- Graph
- 윤성우의 열혈 자료구조
- Algorithm
- 알기쉬운 알고리즘
- R
- 이스케이프 문자
- C 언어 코딩 도장
- Stack
- datastructure
- Today
- Total
목록전체 글 (519)
Engineering Note
학습을 위해 인프런 강의를 듣다가 h2 데이터베이스 접속 방법이 매번 헷갈려서 정리해두려고 작성한 글이다. 1.H2 다운로드 및 실행방법 1-1. H2 데이터베이스 엔진 DBMS를 다운로드 한다.https://www.h2database.com/html/main.html 1-2. 다운로드 하고 압출을 풀어주면 안에 bin 디렉터리가 있는데 그 안에 h2.sh 파일이 있다. 1-3. h2.sh 파일의 권한을 준다. 'chmod 755 h2.sh`. 권한 변경 후 실행(터미널에서 './h2.sh ' 입력)하면 브라우저에 h2데이터베이스 접속을 위한 웹 콘솔이 열린다. 1-4. h2 데이터베이스는 메모리모드와 파일모드가 있는데, 데이터를 유지하기 위해서 파일모드로 실행하고 싶으면 파일 모드로 실행하면 된다. ..
QueryDSL 라이브러리라이브러리개념/용도querydsl-aptQuerydsl이 타입 안전한 쿼리를 생성할 수 있도록 코드 생성 기능을 제공합니다.(Q-Class 생성)querydsl-jpaJPA(Java Persistence API) 환경에서 타입 안전한 쿼리를 작성 할 수 있도록 지원하는 Querydsl의 핵심 라이브러리입니다.(복잡한 동적 쿼리 작성에 유용) Spring Boot 라이브러리라이브러리개념/용도spring-boot-stater-webSpring MVC를 사용하여 웹 애플리케이션 개발을 위한 기본적인 의존성 집합(스타터)을 제공하며, 내장 톰캣을 포함합니다.spring-boot-stater-tomcat스프링 부트 애플리케이션에 내장된 웹 서버로 사용되는 톰캠 라이브러리입니다.sprin..
EntityManagerFactory는 애플리케이션 마다 하나가 존재하고, EntityManagerFactory가 EntityManager를 생성한다. 그리고 EntityManager는 영속성 컨텍스트를 관리하는데, 요청 트랜잭션 마다 영속성컨텍스트를 생성하고 소멸시킨다. 영속성 컨텍스트만 자세히 살펴보면 아래와 같다.영속성 컨텍스트는 JPA에서 가장 중요한 개념으로 Entity를 관리하는 공간이고 트랜잭션과 생명주기를 함께한다. 메모리에 존재하면서 DB 테이블의 캐시 역할을 하는데, 실행부터 테이블이 캐시화돼서 존재하는 건 아니고 트랜잭션 내에서 한 번이라도 조회되거나 persist된 엔티티가 key:value 형태로 저장된다. key는 PK, value는 **엔티티 객체(DB 테이블의 row를 표현하..
INNER JOIN과 LEFT JOIN, 뭐가 다를까?회원 테이블과 게시글 테이블을 조회할 때, "게시글을 쓴 회원만" 볼 것인가, "게시글 안 쓴 회원도" 볼 것인가의 차이입니다. JOIN의 정식 명칭INNER JOIN = JOIN (정식 명칭)LEFT OUTER JOIN = LEFT JOIN (정식 명칭) 실무에서는 JOIN, LEFT JOIN으로 줄여서 많이 씁니다.INNER JOIN: 교집합만 조회언제 사용? 두 테이블에 모두 존재하는 데이터만 필요할 때예시 상황회원 3명이 있습니다: SELECT * FROM member; 이 중 김철수, 이철수만 게시글을 작성했습니다: SELECT * FROM board; INNER JOIN 실행SELECT *FROM member m JOIN board..
MySQL로 데이터베이스를 연습하면서, 게시판 프로젝트로 데이터베이스를 설계하고 SQL로 직접 테이블을 조작해보면서 에러가 발생했다.실행 쿼리INSERT INTO likes (member_id, content, comemnt_id) values(1, "내용", 100) Error Code: 1054. Unknown column 'content' in 'field list' 에러메세지cannot add or update a child row: a foreign key constraint 에러 원인 분석 첫 번째 원인좋아요 like 테이블에 데이터를 넣으려고 했는데 like 테이블의 부모 comment_id 부모 PK값이 없어서 발생한 오류다. 두 번째 원인content 컬럼 - likes 테..
상황 설명OrderDto주문을 위해 상품 id와 상품 주문 수량 count값을 담는 DTO 클래스@Getter @Setter@AllArgsConstructor@NoArgsConstructorpublic class OrderDto { @NotNull(message = "상품 아이디는 필수 입력 값입니다.") private Long itemId; @Min(value = 1 ,message = "최소 주문 수량은 1개입니다.") @Max(value = 999, message = "최대 주문 수량은 999개입니다.") private int count;} OrderItem Entity- Order Entity와 Item Entity의 릴레이션 테이블이면서 주문 상품 정보를 담는 Ent..
들어가며장바구니에 담긴 OrderItem을 주문으로 처리하는 코드를 리팩토링하면서 겪은 여정을 공유합니다. 단순히 코드를 깔끔하게 만들려던 시도가 N+1 문제 발견과 성능 개선으로 이어진 과정을 담았습니다. 문제의 시작: forEach의 한계초기 코드는 stream().forEach()를 사용해 주문 정보를 처리했습니다. 문제의 시작: forEach의 한계초기 코드는 stream().forEach()를 사용해 주문 정보를 처리했습니다.public Long orders(List orderDtoList, String email) { // 1. 회원 조회 (1st Query) Member member = memberRepository.findByEmail(email); ..
1. 영속성 컨텍스트 생명주기JPA를 사용하는 환경(주로 Spring Boot의 Service Layer)에서 @Transactional 어노테이션이 붙은 메서드가 호출될 때 영속성 컨텍스트는 다음과 같은 생명주기를 가집니다. 1-1. 트랜잭션 시작 (생성)@Transactional 메서드가 호출되면 데이터베이스 트랜잭션이 시작됩니다.이와 동시에 JPA의 영속성 컨텍스트가 생성되어 현재 실행 중인 쓰레드의 트랜잭션에 바인딩됩니다.이 영속성 컨텍스트가 1차 캐시 역할을 하며, 트랜잭션 내에서 조회되거나 저장된 모든 엔티티 객체들을 관리합니다. 1-2. 비즈니스 로직 실행 (유지)메서드 내에서 JPA 관련 작업(조회, 저장, 수정 등)이 실행되는 동안 영속성 컨텍스트는 유지됩니다.엔티티를 수정하더라도, 이 ..