Genie의 Java 개발 공부와 일지를 기록하는 아카이브 공간 Develop Study/Java41 (25.02.19) Java Spring Boot 에서 파일 읽어오기 & 내보내기 (CSV) 항상 데이터를 JSON 형식으로만 주고 받는 RESTful API에 익숙할 수 있지만,어플리케이션과 서비스에 따라서 인턴쉽회사에서 CSV기반의 파일로 여러 데이터를 한번에 DB에 옮기거나 읽으면서 처리를 해야하는 기능이 필요할 수도 있어, MongoDB 기반의 NoSQL기반의 DB와 연동한 상태에서Download Upload 를 실습하고자 했다.OpenCSV 라이브러리 의존성 추가 필수dependencies { implementation 'com.opencsv:opencsv:5.6' // OpenCSV 라이브러리 의존성 추가}Java Spring Boot 내에서 CSV 파일을 읽는 것 외 쓰는 작업도 유용하게 할 수 있기 때문에 사용CSVReader나 CSVWriter 클래스를 사용해서 데이터의 .. 2025. 2. 19. (24.10.29) Comparator 인터페이스와 람다식 Java에서 @FunctionalInterface Annotation이 붙은 함수형 인터페이스는@FunctionalInterfaceinterface 인터페이스이름 { 인터페이스 정의 }// 람다식을 사용할 수 있는 함수형 인터페이스 정의를 할때 Annotation 사용 위와 같은 형태로 띄어지게 되고, 익명 클래스처럼 { } 안에 해당 함수형 함수에 해당하는 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Hello from the anonymous class!"); } }; .. 2024. 10. 29. (24.10.10) TDD & DDD / Filter & Interceptor & AOP 비교해보기 계속 CS 관련 모의 면접과 면접 코칭을 받고 있는데알고 있는 CS 지식을 자연스럽게 말하는데 많이 어려우나특히 여러개를 비교하라는 점에서 정리가 안되어있기 때문에 당황을 하는 경우가 많았다. 특히, DDD, AOP, Filter, Interceptor등 산발적으로 정리가 된 정보를 보다 함께 정리를 하면서 스스로 공부하면서비교를 할 수 있도록 하면서 면접 피드백 용, 다음 면접 대비를 하도록 한다. 특히, 정의가 애매할 수 있는 interceptor에 한해서 좀더 다뤄보면서 정리했다. TDD(Test-Driven Development) & DDD (Domain-Driven Design)TDD(Test-Driven Development)테스트 주도 개발실제 코드를 작성, 구현하기 전에 먼저 테스트, 또는.. 2024. 10. 10. (24.08.09)[17주차] WebSocket과 실시간 메시지 구조 프로젝트를 진행하면서 사용자의 화면단과 서버의 데이터 요청응답이 필요한 기능을 사용이 필요했다.특히, 사용자가 포함된 그룹에서 그룹내 실시간 채팅 기능 구현이 필요해지면서 WebSocket을 사용해서 구현을 했다. 관련해서 코드 구현방향은 해당 담당자의 개발로 진행이 되었지만, 관련해서 내가 부족할 수 있는 이론과 작동 방식에 대해서 한번더 짚고 넘어가기 위해 정리WebSocket웹을 통한 클라이언트(브라우저) - 서버 간 실시간으로 양방향 통신을 가능하게 하는 기술즉, Stateless HTTP 통신과 달리 Stateful 프로토콜클라이언트HTTP가 Request-Response 의 단방향 통신 방식임에 반해 WebSocket을 통해 한번의 연결로 클라이언트-서버 간 지속적인 양방향 통신이 가능따라서,.. 2024. 8. 9. (24.07.09)[13주차] @DataJpaTest 슬라이스 테스트에서의 빈 등록 슬라이스 테스트 중 QueryDSL로 구현한 RepositoryCustom과 JpaRepository가 extends 된 3 Layer Architecure 의 Repository 레이어의 테스틀 위해 @DataJpaTest Annotation 을 활용하면서 발생한 이슈를 정리 @DataJpaTest에서의 빈 등록@DataJpaTest@ActiveProfiles("test")public class LikeRespositoryTest { @Autowired private LikeRepository likeRepository; ...이슈테스트 코드에서의 검증 문제가 아닌 디버깅도 시작이 안되는 주입 단에서의 문제가 발생지속적으로 Runtime시에 ApplicationContext자체가.. 2024. 7. 9. (24.07.03)[12주차] QueryDSL사용을 위한 Repository 분리 QueryDSL로 JPA에서 쿼리문을 구현하려고 했지만, 기존에 JpaRepository 를 상속받는 Repository를 사용하고 있었기에 내부에 QueryDSL 쿼리역시 구현을 할 수 없었다. 그렇다고 Service단에서 그 쿼리를 구현하는 것은 계층을 분리하고자 하는 의의와 벗어나게 되는데, 그렇다면 어떻게 QueryDSL을 사용할 수 있을지에 대한 구조 정리QueryDSL을 사용하기 위한 Repository 구성JpaRepository만 상속 받는 형태의 Repository로 Service 계층에서 findBy save delete 등의 쿼리 메서드를 사용할 수 있었지만, QueryDSL을 사용하기 위해서는 이 상속받고 있는 Repository를 사용하는 것이 아닌 위의 그래프처럼 Custom R.. 2024. 7. 3. (24.07.02)[12주차] QueryDSL의 Wildcard 와 Count count를 사용하여 총 갯수를 구하려는 쿼리문을 QueryDSL로 작성을 해야할 필요가 있다.하지만, 어떤 상황에 따라서는 Join 에 따라서 count가 실행되지 않을 수 있다. QueryDSL 의 Wildcard 사용 이슈public ProfileResponseDto getUserProfile(String userName) { QUser qUser = QUser.user; QLike qLike = QLike.like; ... Long aptLikesCount = jpaQueryFactory.select(Wildcard.count) .from(qLike) .leftJoin(qLike.user, qUser).f.. 2024. 7. 2. 이전 1 2 3 4 ··· 6 다음