소개
저는 자바, 스프링 기반의 백엔드 개발이 주무기인 3년차 개발자입니다. 신규 서비스의 요구사항을 분석해서 데이터베이스 테이블을 직접 설계하고, 백엔드 애플리케이션을 처음부터 구성하고 배포한 경험이 있습니다. 프로젝트를 진행할 때마다 만났던 다양한 문제들을 자바, 스프링을 학습하며 얻은 지식으로 해결한 경험이 많습니다. 그리고 필요하다면 다른 기술들을 학습하는 것도 마다하지 않습니다.
좋은 서비스를 만들기 위해서는 개발자의 역량이 기초가 된다고 생각합니다. 그래서 좋은 코드에 대하여 끊임없이 학습하고, 고민합니다. 저는 학습한 것을 다른 사람과 공유하는 일에 보람을 느낍니다. 제가 학습한 내용을 동료 개발자들과 공유하는 노력을 통해, 동료들도 함께 성장하는 개발 문화를 만들고자 노력합니다. 이러한 노력을 지속하다 보니 동료 개발자들이 제가 공유한 코드를 사용하다가, 회사 프로젝트의 코딩 컨벤션으로 제 코딩 스타일을 채택해 사용하기도 했습니다.
게시글
질문&답변
2024.07.25
와일드카드
안녕하세요. JongYun Won님, 공식 서포터즈 y2gcoder입니다. 간단하게 위의 예시에서 정리를 해보자면 : Animal, Dog, Cat 가능 (Animal 과 Animal을 상속한 클래스) : Object, Animal 가능 (Animal 과 Animal이 상속한 클래스) 로 정리할 수 있습니다. 제가 질문에 대해 잘못 이해했다면 조금 더 풀어서 설명해주시면 감사하겠습니다 🙂 감사합니다.
- 0
- 1
- 48
질문&답변
2024.07.25
yaml profiles 인식이 안 됩니다 ㅠ
안녕하세요. 김철준님, 공식 서포터즈 y2gcoder입니다. 저는 보통 그럴 때 application.yaml 에서 띄어쓰기나 필요한 옵션이 누락되어있는지 먼저 확인하는 것 같습니다! 추가로 AI 답변과 함께 아래의 링크도 참고해주십쇼! 링크들로도 해결되지 않는다면 기동할 때의 로그와 application.yaml 을 보여주시겠습니까? https://docs.spring.io/spring-boot/reference/features/profiles.html https://lordofkangs.tistory.com/320 감사합니다.
- 0
- 2
- 31
질문&답변
2024.07.25
컨트롤러에서 호출하는 서비스 질문드립니다.(+더티체킹)
안녕하세요. Byunguk Ahn님, 공식 서포터즈 y2gcoder입니다. 정답은 없으나 도움이 되길 바라면서 말씀을 드리고 싶습니다! 외부 API 호출 시간이 길지 않다면 같은 트랜잭션으로 묶어서 처리할 것 같고, 외부 API 호출 시간이 길다면 하나의 큰 서비스 내에서 카드 충전, 카드 상태 업데이트에 대한 로직을 따로 호출할 것 같습니다. 각 서비스 내에서 여러 번 호출되는 문제는 같은 트랜잭션으로 묶었을 때보다 더 문제가 안될 경우가 많습니다 🙂 (특히 pk나 인덱스로 호출한다면 더 그렇습니다) 먼저 생각하신 바대로 진행해보시고, 안되면 바꾸셔도 됩니다 🙂 감사합니다.
- 0
- 1
- 39
질문&답변
2024.07.23
통합테스트
안녕하세요. 해톨님, 공식 서포터즈 y2gcoder입니다. 이상적으로는 사람이 직접 하는 테스트와 통합 테스트 코드 둘다 필요하다고 생각합니다! 아무리 테스트 코드를 잘 짰다고 생각하더라도 실제로 배포나, 애플리케이션 실행 후 테스트해보면 생각지도 못한 실패 케이스가 나올 수 있기 때문에, 기능을 추가한 후에는 직접 테스트를 해보시는 것이 좋습니다! 테스트 코드를 추가해 자동화하는 것도 필요하다고 생각합니다. 테스트 코드를 짜놓으면 만들어진 코드에 기본적인 신뢰감이 생기는 것이 테스트를 하는 가장 큰 이유라고 생각합니다. 이상적으로는 둘다 하는 것이 맞다 생각하고, 제일 중요한 비즈니스 로직에 대한 테스트(단위 테스트, 서비스 단의 통합 테스트)는 기본으로 하되, 시간이 없다면 Controller 단의 테스트 코드는 필요 시 @WebMvcTest를 통한 테스트를 우선 하고, 직접 휴먼 테스트를 진행하거나 하는 방식을 추천합니다 🙂 감사합니다.
- 0
- 1
- 38
질문&답변
2024.07.23
연관 관계 저장 시 궁금한 점.
안녕하세요. 이용범님, 공식 서포터즈 y2gcoder입니다. users 테이블의 관점으로 보시면 좋을 것 같습니다. users 테이블 입장에서는 team의 id가 외래키 필드로 존재합니다! 그리고 JPA 의 엔티티 매니저 또한 id를 기준으로 엔티티를 구별하고, 다른 엔티티와 연관관계를 맺어주기 때문에, 기존에 DB에 존재하는 team의 id를 연관관계로 맺어주면, 해당 team의 id를 연관관계 엔티티로 하여 저장됩니다 🙂 이 때 저희가 객체로 만든 teamB는 DB에도 저장되어있지 않은 상태지만 teamA와 같은 식별자를 사용했기 때문에, 만약 이를 저장하고자 한다면 새로운 teamB가 생기는게 아니라 teamA의 name이 변경될 것 입니다. 하지만 현재 작성하신 코드에서는 teamB라는 객체를 생성만 하고 영속화하지 않기 때문에 결국 teamA의 id만 유효한 값으로서 사용되는 것입니다. 그래서 변경되지 않은 teamA와 user가 서로 연관관계로 잡혀 저장되게 되고, teamB라는 새로운 객체의 내용은 버려지고, 기존 teamA의 내용만 남기 때문에 위와 같은 결과가 나온 것으로 보입니다 🙂 식별자가 결국 중요한 기준이 됩니다! 감사합니다.
- 0
- 2
- 100