Project Trouble Shooting
-
JPA 대소문자 구별 에러 해결 with MariaDBProject Trouble Shooting/[EATceed] 몸무게 증량 어플 2024. 1. 1. 01:01
문제 발생 프로젝트를 배포한 후 개발한 api에 요청하였더니, 아래와 같은 문제를 마주하였다. Hibernate : select foodentity0_.food_pk as food_pk1_0_, foodentity0_.food_calorie as food_cal2_0_, foodentity0_.food_carbohydrate as food_car3_0_, foodentity0_.food_fat as food_fat4_0_, foodentity0_.food_main_category as food_mai5_0_, foodentity0_.food_name as food_nam6_0_, foodentity0_.food_protein as food_pro7_0_, foodentity0_.food_serving_s..
-
Foreign key constraint is incorrectly formed 에러 해결Project Trouble Shooting/[EATceed] 몸무게 증량 어플 2023. 12. 31. 22:04
문제 발생 개발집 프로젝트를 배포 중 아래와 같은 오류를 만났다. Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #..
-
Transaction을 고려한 CheckedException 예외 처리Project Trouble Shooting/[축팅] 축제 소개팅 어플리케이션 - 카카오 테크 캠퍼스 1기 2023. 11. 12. 17:27
배경지식 CheckedException은 맨 아래에서 설명하고 있습니다. 문제 상황 현재 파일 시스템에 파일을 저장하고 있다. 아래 코드의 문제점이 무엇일까? public List storeFiles(List multipartFiles) throws IOException { List storeFileResult = new ArrayList(); for (MultipartFile multipartFile : multipartFiles) { storeFileResult.add(storeFile(multipartFile)); } return storeFileResult; } @Transactional public List saveCertifications(List certificates) throws IOEx..
-
"Run all Tests"로 모든 단위테스트를 한번에 돌릴 때 실패하는 이슈Project Trouble Shooting/[축팅] 축제 소개팅 어플리케이션 - 카카오 테크 캠퍼스 1기 2023. 10. 14. 02:11
카카오 테크 캠퍼스 3단계 축팅의 인기피드를 개발하고 테스트를 하고 있는 도중 아래와 같은 이슈를 만났습니다. Redis에서 인기 게시물을 조회하는 기능 테스트시 Fail이 발생하였습니다. 단위테스트를 수행할 경우에는 성공하는 데, "Run all Tests"로 모든 단위테스트를 한번에 돌릴 때는 실패할 때도 있고, 성공할 때도 있습니다. 먼저 상황을 분석해보겠습니다. 상황 분석 teardown.sql을 사용해 테스트 시에 게시물 300개를 테이블에 저장하고 있습니다. Run all Tests시 해당 ControllerTest에서 Fail이 발생하였습니다. @Sql("classpath:db/teardown.sql") @AutoConfigureMockMvc @SpringBootTest(webEnvironm..
-
ComposeMethod을 적용해 리팩터링 해보자Project Trouble Shooting/[축팅] 축제 소개팅 어플리케이션 - 카카오 테크 캠퍼스 1기 2023. 10. 13. 11:47
현재 카카오 테크 캠퍼스 3단계에서 축팅이라는 서비스의 인기 피드 부분를 담당해 개발하고 있는 중입니다. 개발 하는 중 멘토님께서 피드백해주신 내용을 블로그로 포스팅해보려고 합니다~ 현재 코드 @Transactional public void execute(){ List top300Posts = postRepository.findTop300ByOrderByPopularityDesc(PageRequest.of(0, POPULARITY_SIZE)); redisTemplate.delete(RedisKey.POPULAR_POST_KEY.getKey()); top300Posts.forEach(getIncompletePopularPostDTO -> { redisTemplate.opsForZSet().add(Redis..
-
Instant 클래스 도입에 관한 고찰Project Trouble Shooting/[축팅] 축제 소개팅 어플리케이션 - 카카오 테크 캠퍼스 1기 2023. 10. 2. 21:21
현재, 카카오테크캠퍼스 3단계에서 저희 팀 Spark는 게시물의 날짜를 저장하는 데 LocalDateTime 자료형을 사용하고 있습니다. @Entity @NoArgsConstructor(access = PROTECTED) @Getter public class Post { // Primary Key @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long postId; // 게시글 ID ... @Column(nullable = false) private LocalDateTime createdAt; // 생성일 } 저희 어플리케이션에서는 게시물의 생성일을 활용해 게시물을 나이를 구하여 이를 인기도에 반영하고 있습니다. 즉, 게시물의 생성일 데..
-
이력 유형 데이터 모델링을 어떻게 해야할까??Project Trouble Shooting/[축팅] 축제 소개팅 어플리케이션 - 카카오 테크 캠퍼스 1기 2023. 9. 14. 11:52
카카오테크캠퍼스 3단계에서 저희 팀이 만들 서비스는 "축팅"이다. 축팅에서는 축팅내에서 사용할 수 있는 고유한 화폐인 "폭죽"이라는 것이 있다. 저희 서비스에서는 폭죽의 거래 이력을 사용하는 기능이 있어, 폭죽 거래 이력을 DB에 저장하려고 합니다. ++ 운영 시에도 필요 그렇다면, 폭죽의 거래 이력 데이터는 어떠한 특징을 가지고 있을 까요?? 이력 유형 데이터는 아래와 같은 특징을 가지고 있습니다. 시간에 따라 데이터가 누적된다. 동일한 칼럼에 대해서 발생한다. 대량 데이터가 발생할 가능성이 높다. 성능에 영향을 주는 경우가 많다. 따라서, 이력 유형 데이터 모델링을 할 때는 데이터 관리 방법에 따라 어떤 유형의 이력 테이블을 관리하는 지 성능을 위해 어떤 부분을 고려해야 하는 지가 중요하다. 쉽게 말..
-
왜? 이미지가 찾아지지 않는 걸까?? - 로컬환경에서 외부 경로를 이용Project Trouble Shooting/[Dotoring] 멘토링 어플리케이션 2023. 8. 21. 01:52
도토링 프로젝트의 프로필 이미지 수정 기능을 개발하다가 아래와 같은 문제상황을 만나 의미있는 문제 상황이어서 포스팅하려 합니다. 문제 상황현재 상황은 아래와 같습니다. resources/static/files 안에 default_profile~~ 이미지가 저장되어 있습니다. 빌드후 애플리케이션을 실행한 후 해당 이미지가 저장된 경로로 조회하면, 위와 같이 이미지가 잘 조회되는 것을 확인할 수 있습니다. 하지만, 아래와 같이 새로운 이미지를 아까와 동일한 경로에 업로드하면 해당 이미지는 조회가 되지 않습니다. 아래와 같이 이미지는 잘 저장이 된 상태입니다. 그렇다면, 실행 중인 애플리케이션을 빌드 -> 실행한 후 조회를 해보면 어떨까? 놀랍게도 조회가 잘 되는 것을 확인할 수 있습니다. 문제 분석..