일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 회고
- Spring
- wil
- 코딩문제
- 코딩공부
- 자료구조
- 코딩테스트 준비
- cs 공부)준비
- ArrayList
- Entity
- 항해99
- 메서드
- github
- HTML
- 자바
- 코딩
- 개발자 취업
- 이진 탐색(binary search)
- 프로그래머스
- 99클럽
- Grafana
- Java
- GIT
- 면접(java
- 정렬 알고리즘(sort algorithm)
- css
- aop
- 배열
- CS
- Til
- Today
- Total
목록Spring (27)
hayu's 개발 일지
Entity란? Entity 클래스는 실제 DB 테이블과 매핑되는 클래스로 데이터 베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체이다. (엔티티 클래스는 실제 DB의 테이블과 1:1 매핑된다.) Entity는 데이터 베이스 영속성의 목적으로 사용되는 객체이기 때문에 요청(Request)이나 응답(Response)을 전달하는 클래스로 사용하는 것은 좋지 않다. Entity에서는 Setter 메서드의 사용을 지양해야 한다. 변경되지 않는 인스턴스에 대해서도 Setter로 접근이 가능해지기 때문에 객체의 일관성, 안전성을 보장하기 힘들어진다.(Setter 대신 생성자나 Builder를 사용하는 것이 좋다.) Dto란? 계층(Layer) 간 데이터 교환이 이루어질 수 있도록 하는 객체이다.(직렬화에도 사..
문제 엔티티 연관매핑 후 코드 실행했는데 테이블에 연관된 엔티티의 아이디값이 들어가지 않고 null이 나오는 문제. 원인 아직 모르겠다. 엔티티 연관관계도 확인했는데 서비스 코드에서 choice에 게임 아이디 주입 코드가 필요한 것 같다. /* * 밸런스 게임 생성*/ @Transactional public GameResponseDto createGame(GameRequestDto gameRequestDto, UserDetails userDetails) { User user = userRepository.findByEmail(userDetails.getUsername()) .orElseThrow(()->new CustomApiException("사용자를 찾을 수 없습니다.")); /* * 선택지 생성*/..
테스트 코드 TDD(test-driven development) 테스트가 주도하는 개발을 말한다. (선 테스트 → 후 개발) 테스트 코드를 먼저 작성하는 것 부터 시작한다. 항상 실패하는 테스트 작성 → 테스트가 통과하는 프로덕션 코드 작성 → 테스트가 통과하면 코드를 리팩토링 TDD의 장점 객체 지향적인 코드 개발: 의존성과 종속성이 낮은 모듈로 조합된 소프트웨어 개발 가능 설계 수정시간의 단축: 테스트 코드를 먼저 작성하기 때문에 설계의 구조적 문제를 바로 찾아낼 수 있다. 유지보수(리펙토링)의 용이성: 추후 문제가 발생했을 때 모듈별로 테스트 진행하면 문제 지점을 찾기 쉽다. TDD의 단점 생산성 저하: 예외상황이 발생할 것이 예측되는 상황에도 테스트 코드 작성하고 통과 코드를 작성하는 것은 비효율..
Swagger 란? - API의 스펙(spec)을 설명하고 관리할 수 있는 API문서이다. - API 사용 방법을 이해관계자에게 알려주는 문서이다. 1. application.properties server.forward-headers-strategy=FRAMEWORK spring.mvc.pathmatch.matching-strategy=ant_path_matcher url = "" dom_id = "#swagger-ui" validatorUrl = "" 2. build.gradle // Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' 3. SwaggerConfig 3.1 Spring Security impo..
Builder Pattern 이란? - 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴이다. - 생성자에 들어갈 매개 변수를 메서드로 하나한 받아서 마지막에 빌드해서 객체를 생성한다. Builder Pattern 탄생 배경 - 이전에는 Setter 메서드를 호출함으로써 유연적으로 객체 생성이 가능해졌다. 하지만 이런 방식은 객체 생성 시점에 모든 값들을 주입하지 않아 일관성 문제와 불변성 문제가 나타났다. 일관성문제 - 필수 매개변수는 객체가 초기화될 때 반드시 설정되어야 하는 값이다. 하지만 개발자가 메서드를 호출하지 않았다면 이 객체는 일관성이 무너진 상태가 된다. 즉, 객체가 유효하지 않은 것이다. 불변성문제 - Setter 메서드는 객체를 처음 생성할 때..
트랜잭션(transaction)이란? - 데이터 베이스 상에서 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이면서 일관되고 밎을 수 있는 시스템을 의미한다. 트랜잭션의 특징 - 원자성 (Atomicity): 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 아니면 반영되지 않아야한다. 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다. - 일관성 (Consistency): 각 데이터 트랜잭션이 데이터 베이스를 일관성있는 상태에서 일관성있는 상태로 이동해야함을 의미한다. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야한다. - 독립성 (Isolation)..