TIL 68

TIL 2024-12-17 ( 5주차 - 데이터베이스 다루기 )

1) 오늘 학습한 내용QueryDLSAuditing@Dynamicinsert@DynamicUpdate QueryDSLEntity의 매핑 정보를 활용하여 쿼리에 적합하도록 쿼리 전용 클래스(Q클래스)로 재구성해주는 기술.JPAQueryFactory을 통한 Q클래스를 활용할 수 있는 기능들을 제공.JPAQueryFactory?재구성한 Q클래스를 통해 문자열이 아닌 객체 또는 함수로 쿼리를 작성하고 실행하게 해주는 기술.JPAQueryFactory 사용을 위해서는 entityManager를 주입해서 Bean으로 등록해줘야 한다.// config 패키지안에 추가@Configurationpublic class JPAConfiguration { @PersistenceContext private EntityMan..

TIL/Spring 2024.12.17

TIL 2024-12-12 ( 4주차 - 데이터베이스 다루기 )

1) 오늘 학습한 내용CascadeorphanRemovalFetchJpaRepository페이징JPQL Cascade (영속성 전이)사용위치 : 연관관계의 주인 반대편 - 부모 엔티티 (N대1 에서 1), (OneToMany or OneToOne)양쪽 엔티티의 라이프 사이클이 동일하거나 비슷해야한다.옵션 종류 ALL : 전체 상태 전이PERSIST : 저장 상태 전이REMOVE : 삭제 상태 전이MERGE : 업데이트 상태 전이REFERESH : 갱신 상태 전이DETACH : 비영속성 상태 전이 orphanRemoval (고아 객체 제거)사용위치 : OneToMany or OneToOne에서 사용 - 부모 엔티티Cascade.REMOVE와 비슷한 용도로 삭제를 전파하는데 쓰인다.부모 객체에서 리스트 요소..

TIL/Spring 2024.12.12

TIL 2024-12-10 ( 2-3주차 - 데이터베이스 다루기 )

1 ) 오늘 학습한 내용DB(H2) 사용 방식트랜잭션DB Driver 역할 및 종류DB Driver 동작 방식JDBCMyBatisORM DB(H2) 사용방식Server Mode : 현업에서 사용하는 모드, 컴퓨터에 DB 엔진을 설치하고 엔진을 구동하는 방식In - memory Mode : 애플리케이션에 DB 엔진이 내장되어 에플리케이션과 함께 실행되고 종료되는 방식Embedded Mode : 인메모리와 같은 방식이지만 데이터를 로컬에 저장하기 때문에 휘발에서 자유로운 방식 트랜잭션DB의 상태를 변화시키기 위해서 수행하는 작업의 단위데이터 처리 중에 문제 발생시 그 전에 했던 변경을 아무일도 없는 것 처럼 모두 되돌림.3가지 특징원자성 (All or Nothing) : 모두 반영되던가 전혀 반영되지 않아야..

TIL/Spring 2024.12.10

[KPT 회고록] (project : 먹GO)

KPT 회고록1. Keep - 현재 만족하고 있는 부분 팀원들간의 피드백 (코드리뷰) 깃브랜치 나눠서 작업 (Master - Develop - feat/user, feat/admin, feat/store) 에러코드 공통화 적극적인 소통 패키지 도메인 단위로 나누기 enum 활용해 공통 String 처리2. Problem - 불편하게 느끼는 부분erd - api 명세서가 처음부터 제대로 되어있지 않아 생기는 의견 충돌에러코드 공통 작업으로 인한 충돌 -> merge 해야함erd 중요한 칼럼 순서대로 정렬상수 활용3. Try - Problem에 대한 해결책, 당장 실행 가능한 1) 설계 더 신경 쓰고, 시간을 투자해보기2) api 명세서 쓸 때, 미리 생각하고 공통 코드로 작성! -> 혼자 관리3) pk -..

TIL/Project 2024.12.09

TIL 2024-12-08 (Trouble Shooting (먹GO) )

1.  Cookie 역직렬화 1) 개요쿠키에서 장바구니 데이터를 읽어와 객체로 변환하는 방식을 구현하려고 하였고 처음엔 단순한 형변환으로 데이터를 저장할 수 있다고 생각하였지만 파싱이란 개념을 몰라 문제가 발생하였다. 2) 문제 발생// 처음에 생각한 방법List basket = (List) basketCookie.getValue();문제 1.처음엔 단순한 형변환으로 데이터를 저장할 수 있다고 생각하였다. 하지만 여기서 ClassCastException 이라는 exception이 발생하는데 쿠키 값은 단순 문자열이기에 이를 Java 객체로 직접 변환하려고 발생하는 에러인 것을 알았다.문제 2.쿠키 값은 JSON 형식이므로 JSON 데이터를 처리하지 않으면 문자열 데이터인데 쿠키 값을 그대로 사용하려고 하..

TIL/Project 2024.12.08

TIL 2024-12-05 (outsourcing 2일차)

1) 프로젝트 진행도가게 CRUD 구현가게 생성가게 수정가게 단건 조회(메뉴 같이 조회)가게 이름 검색(이름으로 검색히 연관된 가게 다 조회)가게 페업메뉴 CRUD 구현메뉴 생성 (1일차)메뉴 삭제메뉴 수정 (2일차)장바구니 (쿠키 활용)한 번에 주문 가게 단건 조회 (@Service) public StoreMenuResponseDto findStore(Long storeId, User loginUser) { // 가게 Id 확인 Store findStore = storeRepository.findByStoreOrElseThrow(storeId); if(findStore.getStatus() == StoreStatus.CLOSURE){ if(lo..

TIL/Project 2024.12.05

TIL 2024-12-04 (outsourcing 1일차)

1) 프로젝트 진행도가게 CRUD 구현가게 생성가게 수정가게 단건 조회(메뉴 같이 조회)가게 이름 검색(이름으로 검색히 연관된 가게 다 조회)가게 페업메뉴 CRUD 구현메뉴 생성 (1일차)메뉴 삭제메뉴 수정장바구니 (쿠키 활용)한 번에 주문 모든 예외처리는 임시로 NOT_FOUND_USER로만 해놓은 겁니다.가게 생성가게는 오픈 및 마감 시간이 있습니다.가게는 최소 주문 금액이 있습니다.사장님은 최대 3개의 가게만 소지 가능. //권한 검증 if(!loginUser.getAuthority().equals(Authority.OWNER)) { throw new CustomException(ErrorCode.NOT_FOUND_USER); } ..

TIL/Project 2024.12.04

TIL 2024-11-28 (Trouble Shooting (통화 환율) )

1 ) BigDecimal? 배경처음 중간 테이블은 UserCurrency Entity를 생성할 때 금액 관련 필드를 모두 Double로 선언.상황ExchangeService에서 환전 요청 Service 로직 코딩 중 환율 계산에서 Type Error 발생, 새로 만들었던 UserCurrency Eutity에선 Double로 선언되어 있는데 Currency에 선언된 환율은 BigDecimal로 선언되어 있어 타입 Error 발생과 사칙연산 사용불가능.해결기존에 먼저 작성되어 있던 rate의 타입인 BigDecimal로 다른 entity의 금액 관련 타입 변경 후에 BigDecimal의 계산법을 검색하여 찾은 뒤 코드 수정, 사용법은 두 개의 나눌 수를 각각 적어주고 가운데 '2' 는 소수점 자리 수를 의..

TIL/Project 2024.11.28

TIL 2024-11-27 (Spring 심화 - 활용)

1 ) 학습한 내용BeanAPI 예외처리JPQLfetch joinJPA 와 JPQL  Bean생명주기Spring Container 초기화Bean 인스턴스 생성의존성 주입초기화 메서드 호출Bean 사용소멸 메서드 호출Bean 소멸속성Bean이 Spring 내부적으로 구현된 코드에 의존하지 않는다.메서드 이름을 자유롭게 설정할 수 있다.외부 라이브러리에도 초기화, 종료 메서드를 적용할 수 있다.@PostConstructBean이 생성되고 의존성 주입이 완료된 후에 호출되는 메서드를 지정주로 초기화 작업을 할 때 사용Bean ScopeSingleton(싱글톤)기본으로 설정되는 스코프.Spring 컨테이너 내에서 Bean이 하나만 생성되고 모든 요청이 같은 객체를 사용상태를 가지면 안된다.prototype요청할..

TIL/Spring 2024.11.27

TIL 2024-11-26 (Spring 심화)

1 ) 오늘 학습한 내용HttpMessageConverterSpring 내부 구조Converter, Formatter1 : N 연관관계1 : 1 연관관계N : M 연관관계상속관계 매핑Proxy지연로딩, 즉시로딩영속성 전이JPA와 Transaction  HttpMessageConverter사용처HTTP 요청 : @RequestBody, @HttpEntity, @RequestEntityHTTP 응답 : @ResponseBody, @HttpEntity, @ResponseEntity우선 순위byte[]StringJSON Spring 내부 구조ArgumentResolverHTTP 요청이 컨트롤러 메소드에 전달될 때 각 파라미터를 알맞은 객체로 변환하는 인터페이스ReturnValueHandler컨트롤러 메서드가 반..

TIL/Spring 2024.11.26