개발일상 8

[2023년 하반기] preschooler 개발자의 6개월

junior 개발자가 되는 그 날까지... 🤬😢 우아한테크캠프 두 달짜리 짧은 과정이었지만 끝난 이후 반 년이 지난 지금까지도 많은 영향을 주고 있다. (배민 앱 삭제... 라던가? ㅋ) 캠프에 지원하면서 가졌던 목표는 크게 두 가지였다. 개발에 열정적인 동료들을 얻는 것이 첫번째였고, 우물 밖 개구리가 되는 게 두번째였다. 그리고 모두 다 이루었다. TDD, OOP, MySQL, JPA 등 다양한 분야에 대해 접하고 기술적으로 크게 성장할 수 있었다. 캠프 전과 비교했을 때 우물 밖 개구리가 되었다고 확실하게 말할 수 있다. 하지만 가장 큰 업적(?)은 열정적인 동기들을 얻은 것이다. 하루 12시간 동안 개발을 하면서도 밥 먹을 때까지 코드에 대해 토론하는 동기들을 보며 가끔은 체할 것 같았지만 ㅎㅎ ..

개발일상/회고 2024.01.10

[인턴] 우아한테크캠프 6기 회고 & 우아한형제들 불합격 후기

두 달 간의 캠프에 이어 채용까지 드디어 끝이 났다. 좋은 마무리는 아니었지만 마음을 다잡는 의미에서, 그리고 앞으로의 나를 위해 회고를 쓰려고 한다. 💡 느낀 점 건강 관리가 최우선이다 밤까지 교육장에 남아있으면서 두 끼를 밖에서 해결하고, 식사 시간 외에는 계속 앉아있다보니 저절로 건강이 안좋아지는 게 느껴졌다... 최악일 때는 위염과 장염을 동시에 걸리면서 링거도 두 번 맞았다. 이 때 했던 프로젝트는 다른 때보다 집중을 많이 못해서 페어에게 미안했다. 아프지 않았던 때에도 자잘히 컨디션이 좋지 않았는데, 이걸 극복하려고 하니 오히려 스트레스를 좀 받았다. 이제는 면접도 끝났으니 우테캠 전에 꾸준히 하던 러닝을 다시 시작하려고 한다. 그리고 (아무리 흥미로운 이슈를 발견해도^^;) 밤 새서 개발하는..

개발일상/회고 2023.09.27

[230916] MySQL InnoDB의 베타 락

✅ MySQL InnoDB의 베타 락 헷갈려서 스스로에게 내본 문제. (1) 인덱스가 걸려있지 않은 컬럼으로 베타 락을 거는 경우 Q. 위와 같은 test 테이블이 있다. id는 기본 키이고, name은 인덱스가 걸리지 않은 컬럼이다. 이 때 select * from test where name = 'a' for update 쿼리로 베타 락을 걸면 어떤 컬럼에 어떤 락이 걸릴까? A. *************************** 1. row *************************** OBJECT_NAME: test INDEX_NAME: NULL LOCK_TYPE: TABLE LOCK_MODE: IX LOCK_STATUS: GRANTED LOCK_DATA: NULL ***************..

개발일상/TIL 2023.09.17

[230914] Spring의 @Transactional 기본 설정, Spring의 AOP와 프록시, MySQL 아키텍처

✅ @Transactional 기본 설정 https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html#transaction-declarative-attransactional-settings Using @Transactional :: Spring Framework The @Transactional annotation is metadata that specifies that an interface, class, or method must have transactional semantics (for example, "start a brand new read-only transaction ..

개발일상/TIL 2023.09.14

[230911] DTO와 도메인의 변환, 중첩 트랜잭션

✅ DTO와 도메인의 변환 DTO를 사용하는 이유? Although the main reason for using a Data Transfer Object is to batch up what would be multiple remote calls into a single call, it's worth mentioning that another advantage is to encapsulate the serialization mechanism for transferring data over the wire. By encapsulating the serialization like this, the DTOs keep this logic out of the rest of the code and also prov..

개발일상/TIL 2023.09.14

[230910] JPA에서 부모가 자식을 제한해서 가지는 경우

✅ JPA에서 부모가 자식을 제한해서 가지는 경우 상황 설명 (제목 쓰는 것부터 헷갈리네...) 일반적으로 데이터베이스에서 fk로 부모와 자식의 관계를 맺는 경우, 자식이 해당 부모의 식별자를 가지고 있기만 하면 된다. 즉 부모가 가질 수 있는 자식의 수에는 제한이 없다. JPA에서도 마찬가지이다. 따라서 보통 @OneToMany로 부모 쪽에서 자식을 참조할 때는 List 등 크기 제한이 없는 컬렉션을 사용한다. @Entity public class Parent { @OneToMany private List childs = new ArrayList(); } 하지만 특정 기준에 따라 제한적으로 자식을 가지고 싶다면 어떻게 될까? 현재 내가 참여한 프로젝트에서는 '가계부 내역'과 '카테고리'가 존재한다. 가..

개발일상/TIL 2023.09.10

[230907] Spring Boot 테스트의 롤백

✅ Spring Boot 테스트의 롤백 문제 발생: 일대다 단방향 참조가 불러온 나비효과 JPA에서 일대다 단방향을 지양하라는 것은 널리 알려진 얘기이다. 대표적인 이유는 자식 엔티티를 데이터베이스에 save하는 과정에서 추가 쿼리가 날라가기 때문인데, 자식 엔티티에서 부모의 정보(id)를 가지고 있지 않아 insert 쿼리 이후 fk를 설정하는 update 쿼리가 발생한다. 이를 직접 확인하기 위해 테스트를 해보았다. @DataJpaTest public class CustomTest { @Autowired private OrderRepository orderRepository; @Test void test() { Order order = new Order(new OrderItems()); orderRe..

개발일상/TIL 2023.09.08

[2023년 상반기] toddler 개발자의 6개월

SSAFY 졸업을 앞두고 싸피에 합격했다. (합격 후기: https://velog.io/@dahyen0o/싸피-9기-전공자-합격-후기) 사실 합격이 마냥 기쁘진 않았다. 백엔드 개발자로 진로를 굳혔기 때문에 1학기 때 프론트까지 배우는 점이나, 본격적인 프로젝트는 2학기에 진행하는 점 등이 마음에 들지 않았다. 1학기를 마친 지금은... 오히려 좋아 ㅋㅋ 자바나 알고리즘 등 프로젝트만 하다 놓치기 쉬운 내용을 복습/공부하고, 스프링도 스프링 부트 전 레거시 스프링을 배워서 기본부터 공부하는 게 좋았다. 스타트 캠프만 빼면 1학기는 좋았다. 반 친구들과 알고리즘 스터디도 진행 해 백준 계정도 없는 내가 골드1까지 올랐다. 혼자서 공부하면 망하는 사람 알고리즘, 웹 개발 등 모든 분야를 '대강' 알고 있는 ..

개발일상/회고 2023.06.25