본문 바로가기
반응형

Spring/JPA5

[Spring] TDD 도입기(1) feat) Repo Layer 이번에 그로우 업 프로젝트를 진행하면서 같이 프로젝트를 하는 친구와 TDD를 도입 해보도록 하였습니다. TDD 는 테스트 주도 개발이라고 합니다. 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다. 실패하는 테스트 코드를 작성할 때까지 실제 코드를 작성하지 않는 것과, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성해야 하는 것입니다. 이를 통해 실제 코드에 대해 기대되는 바를 보다 명확하게 정의함으로써 불필요한 설계를 피할 수 있고, 정확한 요구사항에 집중할 수 있습니다. TDD 의 효과로 디버깅 시간을 단축하고, 작성한 코드가 가지는 불안정성을 개선해 생산성을 높일 수 있습니다. 보통 테스트를 위해 JUni.. 2024. 12. 21.
[Spring/JPA] Entity 에서 UUID vs AutoIncrement Entity를 작성하면  보통 95%의 사람들은 Auto Increment를 쓴다. 이로인해 많지는 않지만 문제가 생기는데외부에서 해당 시스템 PK를 예측하기 쉬워져서 SQL Injection 문제Sequence, auto_increment는 중앙 집중식으로 값을 생성하는 방식이므로 DB에 의존적이게 되어 확장성이 제한되는 문제서비스 폭풍성장 시, ID 고갈되는 문제 (BIGINT 최댓값은 4,294,967,295 이고, unsigned BIGINT라면 18,446,744,073,709,551,615)데이터베이스 변경의 어려움DB가 2대 이상일 때 중복 문제 이런 문제를 해결하고자 나온게 UUID 값을 PK로 설정하는것이다. UUID는 범용 고유 식별자라는 뜻으로 128bit의 긴 고유값을 PK로 사용한.. 2024. 7. 1.
[Spring/JPA] 로그 관리 로그 : sout(”Hello world”); ⇒ 중요도 분리가 안된다. ⇒ 중요도에 따라 로그레벨 관리 해야한다.debug 모드 (모든 로그가 다 나온다.)log.debug(”debug 모드입니다.”)info 모드log.info(”일반로그”)error모드 (가장 엄격 , error 로그만 나온다.)log.error(”일반로그”)로그 라이브러리 (log4j, logback)로그관리 (debug, info, error)로그파일관리.ymllogging: level: root: info # info로 설정 # trace  사용방법 1.@RestController@Slf4j // log 어노테이션 (롬복)public class LogTestController { @GetMapping("log/.. 2024. 6. 25.
[Spring/JPA] Persist() , flush() 가 뭐야 ? JPA는 요청이 들어오면 EntityManagerFactory 에서 EntityManager 를 생성한다. EntityManager: 엔티티를 관리하는 역할을 수행하는 클래스EntityManager 는 내부적으로 DB 커넥션 풀을 사용해서 DB에 붙는다. 그러면 어떤 방식으로 EntityManager 는 Entity들을 관리를 할까 ?? EntityManager 내부에 영속성 컨텍스트(Persistence Context)라는 걸 두어서 Entity들을 관리한다. 영속성 컨텍스트 : Entity를 영구 저장하는 환경애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. EntityManager 를 통해 엔티티를 저장하거나 조회하면 EntityManager는 영속성 컨텍스.. 2024. 5. 24.
[Spring/JPA]Spring Scheduler 스프링 스케쥴러를 사용하는 이유는일정 시간마다 코드가 실행될 수 있게 해줄 수 있기 때문입니다. 예시 상황으로 만약 기본 게시판에서 예약 글 쓰기가 있다고 생각을해봅니다. 현재 시각 11시 52분에 예약발행을 하면 글 게시판에는 보이지 않아야하고 11시 55분이 되는 순간 포스팅이 되어야 합니다. 구현해보도록 하겠습니다.   우선 현재시각인 11시 52분에  11시 55분 예약작성을 하려고 합니다. 지금 날짜 이전 코드를 선택시 프론트에서 선택 할 수 없도록 Js로 설정했습니다.   이제 11시 55분으로 넣어봅시다.제목 : 스케쥴러테스트내용 : 스케줄러 테스트 11시 55분으로 넣었습니다. "Y" 는 appointment 입니다. 즉 예약여부입니다.이제 스케줄러 코드를 짜서 매 분 마다 데이터베이스를 .. 2024. 2. 2.
반응형