- Today
- Yesterday
- Total
목록전체 글 (375)
메이쁘
안녕하세요? 개인적으로 코틀린 문법 공부하다가 contract에 대해 알게 되었고, 샘플 코드를 작성해가면서 이해하고 있었습니다. 그러던 중, 샘플 코드가 제대로 동작하지 않아서 원인을 찾던 중 좀 다르게 이해하고 있었습니다.. 그래서, 혹시나 까먹지 않고 나중에 다시 사용할 때 기억하기 위해 간단하게라도 포스팅하게 되었습니다! (다른 블로그 게시글을 참고하면서 공부했습니다.) 0. Contract 란? 우선, contract에 대한 정의와 사용 목적에 대해 간단히 작성하겠습니다. ------------------------------------------------------------------------------------------------------------------------------..
안녕하세요. fun sum(vararg nums: Int) = nums.sum() // parameter로 받은 숫자들을 전부 더하는 함수 와 같이, 간단한 함수를 가지고 테스트를 해봤습니다. vararg nums를 parameter로 받는 함수인데요. vararg는 가변인자. 즉, 매개변수의 개수를 동적으로 지정해 줄 수 있게 하는 변수 입니다. 그렇기 때문에, 배열을 parameter로 넘길 수 있습니다. 근데 왜 이 글을 포스팅하게 되었냐!! String 같은 경우, arrayOf() 함수를 사용해서 Array 으로 형변환한 뒤 fun showAll(vararg s: String) { // parameter로 받은 문자열을 전부 보여주는 함수 println(s.joinToString()) } 와 같..
안녕하세요? Kotlin으로 Spring framework를 사용하게 되서, 처음 프로젝트 생성부터 하나씩 만들어가면서 공부하려 했습니다. 근데 왠걸... 처음 생성할 때 부터 이슈가 발생했습니다. 구글 검색을 통해 빠르게 해결하긴 했습니다만.. 어찌보면 간단한 건데, 앞으로도 프로젝트 생성할 일은 잦을 것 같아서 따로 포스팅해두려고 했습니다. 물론 다른 분들의 게시글을 참고하셔도 되지만, 저는 빠르게 해결하기 위해 작성하려 합니다. 빠르게 해결해서 시간절약하시길 바랍니다! IDE : Intellij Framework : Spring boot 2.6.4 Language : Kotlin Build : Gradle 1. 문제 발생 정확히 spring boot 프로젝트 생성 후 gradle build를 시도하..
안녕하세요? 보통 java persistence framework로 ORM방식인 JPA를 많이들 사용하시는데요. 현재 프로젝트에서는 SQL Mapper 방식인 mybatis로 DB연동을 합니다. API 개발 도중, insert한 후, insert할 때 사용했던 PK값을 가지고 와서 이 PK와 연계된 테이블에 FK로 값을 insert하는 그런 로직을 만들어야 했습니다. 이를 위해 insert 후 해당 값을 다시 select해서 PK값을 가져오는건 비효율적이라고 생각했습니다. 다른 방법이 있지 않을까 찾다가, insert 후 결과로 특정 값을 select 해서 받아올 수 있는 방법을 찾게 되서 적용시켰는데요. 바로, selectKey 입니다. 핵심만 말씀드리면, 방식으로 xml에 쿼리를 만들어두면, sele..
안녕하세요. CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다. 틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음 언젠간 면접하게 될 때 모아서 쓰려고 합니다. (실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!) 이번 글은 Spring 카테고리 입니다. -- 질문 목록 Q1. PUT과 PATCH의 차이점과 PATCH를 사용한 이유는? Q2. JPA에서 연관관계가 필요한 이유 및 테이블 간 맵핑을 어노테이션으로 표시할 필요성? Q1. PUT과 PATCH의 차이점과 PATCH를 사용한 이유는? A. PUT과 PATCH 둘 다 데이터를 UPDATE하는 HTTP Method 입니다. 하지만..
안녕하세요? 거두절미하고 바로 작성해보겠습니다. JPA에서 데이터를 DB에 INSERT하기 위해 사용하는 save와 saveAll이 있습니다. 이 두 가지의 큰 차이는 save는 1개를 저장하는 것이고, saveAll은 안에 들어가있는 N개의 데이터를 저장하는 것입니다. 그럼, 같은 N건을 save와 saveAll을 사용해서 저장하게 되면 어떤 성능 차이가 있을까요? 0. 테스트 @Nested @DisplayName("save와 saveAll 성능 비교 테스트") class SaveTest { @Transactional @Test void SAVE_시간_측정_테스트() { long start = System.currentTimeMillis(); int count = 100000; String member..
안녕하세요. CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다. 틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음 언젠간 면접하게 될 때 모아서 쓰려고 합니다. (실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!) 이번 글은 Spring 카테고리 입니다. -- 질문 목록 Q1. find 시 transaction에 readonly 속성을 준 이유가 있을까요? (=@Transactional 어노테이션에 readOnly 속성을 부여한 이유?) Q2. EntityManager가 무엇이고, JPA에서는 어떻게 사용하나요? Q3. 영속성 컨테스트(Persistence Context)가 무엇이고,..
안녕하세요? JPA를 사용하던 중 엔티티 간 연관관계가 있을 때, 해당 엔티티에 대해 SELECT 조회 시 발생하는 N+1 문제에 대해 알아보고 테스트해보고 해결해보는 시간을 가졌습니다. 이를 캡쳐하고 정리하면서 공부하려고 합니다. 0. JPA와 JPQL JPA와 JPQL. 무슨 관계일까요? JPQL은 Java Persistence Query Language의 약자로, DB 테이블이 아니라 엔티티의 객체를 대상으로 검색하는 객체 지향 쿼리입니다. 이름처럼 SQL과 비슷한 문법을 가지고 있습니다. JPQL을 사용하기 전까지는 EntityManger의 find를 통해 Select를 했었는데요. 이러한 find 함수만 활용하기에는 조회가 복잡해지고 어려워질수록 사용하기가 까다로워집니다. 이를 해결하기 위해 J..
안녕하세요. CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다. 틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음 언젠간 면접하게 될 때 모아서 쓰려고 합니다. (실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!) 이번 글은 Spring 카테고리 입니다. -- 질문 목록 Q1. JPA Entity Class에서 @Setter를 지양하는 이유는? (Entity에서 Setter 함수를 사용하지 않는 이유?) Q2. @ControllerAdvice 어노테이션의 정의 및 사용 목적, 사용한 이유는? Q3. @ExceptionHandler 어노테이션의 정의와 사용 방법? Q4. 그 외의 @Mo..
안녕하세요. CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다. 틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음 언젠간 면접하게 될 때 모아서 쓰려고 합니다. (실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!) 이번 글은 Spring 카테고리 입니다. -- 질문 목록 Q1. 상위 메소드에서 @Transactional 어노테이션을 적용하지 않고, 하위 메소드에서만 적용했을 때, 상위 메소드에서 하위 메소드 호출 시 Transaction이 반영되지 않는 이유는? Q2. 그럼, 상위 메소드 및 하위 메소드 둘 다 @Transactional 어노테이션을 적용했을 때, 트랜잭션이 어떻게 동..