용로그
article thumbnail
[Spring] 트랜잭션과 @Transactional 정리
Spring Framework 2023. 1. 14. 20:52

이번 포스팅에서는 우리가 흔히 사용하는 @Transactional 어노테이션에 관련해서 자세하게 기술하려고 한다. 우선 트랜잭션의 기본적인 개념부터 알아야 @Transactional을 더 잘 이해할 수 있으므로 데이터베이스상에서의 트랜잭션의 개념을 먼저 알아보자. 트랜잭션의 정의 데이터베이스 상에서 트랜잭션을 정의하는 바는 다음과 같다. 데이터베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 트랜잭션의 특징 트랜잭션의 특징은 크게 4가지로 나뉜다. 원자성 (Atomicity) 일관성 (Consistency) 독립성 (Isolation) 지속성 (Du..

article thumbnail
[회고] 우아한테크코스 5기 최종 합격과 2022년 회고록
우아한테크코스 2022. 12. 28. 18:46

2022년 연말이 다가와 올 한 해 내가 어떻게 지냈는지 기록을 남기고 더 나은 내년을 위해 회고록을 작성한다. 인생 두 번째 터닝 포인트 두 번째 터닝 포인트는 우연한 계기 같은게 아니라 인간관계에서 만났다. 1학년을 마치고 2학년으로 올라오며 친했던 친구들과 흩어졌지만, 그만큼 새로운 친구들도 많이 만났다. 4월까지는 반 친구들과 어색하기도 하고 친한 친구들하고만 말을 하곤 했지만, 유치하지만 반장도 하고 많은 1학년 때 말도 안 해본 친구들이랑 이야기도 해보며 친해졌다. 이때 급격하게 친해진 애들이 있는데 내 안에 잠재워져 있던 목표 의식을 깨워주며 각자의 캐릭터도 있다ㅋㅋ. 얘네도 마찬가지로 코딩파이터이기도 하고 직설적으로 말하는 성격이어서 학교에서의 평판은 좋지 않았을지라도 내 기준에서는 100..

article thumbnail
[Infra] 말로만 듣던 CI 구축해보기
Infrastructure 2022. 12. 5. 12:10

준비물 : ec2(ubuntu), jdk 11, docker, jenkins, github 들어만 보고 실제로 사용은 못해본 녀석들.. 오늘은 진짜 해봅시다!! 작고 소중한 EC2 프리티어 프리티어 인스턴스의 메모리는 너무나 작고 소중합니다. 따라서 스왑메모리를 적용해서 조금이나마 숨통을 트이게 해줄텐데요. 만약 본인이 프리티어를 사용하는데 스왑 메모리를 사용하지 않는다면, 젠킨스 빌드할 때 서버가 죽습니다. $ sudo dd if=/dev/zero of=/swapfile bs=128M count=16 $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile $ sudo swapon -s 파일 열어주고 $ sudo vi /etc..

article thumbnail
[회고] 우아한테크코스 5기 프리코스 4주 차 회고
우아한테크코스 2022. 11. 22. 14:52

랜덤한 숫자를 어떻게 뽑을 것인가 이번 4주차 미션은 마지막 미션 답게 구현에 필요한 몇몇의 클래스가 제시되었는데, 이 클래스들끼리도 바꿀 수 있는 것과 없는 것이 다 달라서 실제 구현 난이도가 체감상 조금 높았던 것 같다. 제시된 클래스들을 파악하며 처음으로 느꼈던 것은 BridgeMaker 클래스에서 어떻게 랜덤한 수를 가져올 것인가에 대해서 고민이 되었는데, 처음에는 Interface의 구현체가 없는 줄 알고 생성자 자체에 오버라이딩을 해서 구현을 했었다. 이번 우테코가 BridgeRandomNumberGenerator라는 클래스에서 직접 BridgeNumberGenerator를 구현해놓았었다. 그래서 BridgeMaker에서 생성자를 받을 때는 아래와 같이 받으면 랜덤한 숫자를 뽑을 수 있는 프로..

article thumbnail
[회고] 우아한테크코스 5기 프리코스 3주 차 회고
우아한테크코스 2022. 11. 15. 11:17

UnsupportedOperationException가 뭐임 😅 기능 구현을 완료하고 ApplicationTest를 깔끔하게 통과하기를 바랬다. 어림도 없지. Exception in thread "main" java.lang.UnsupportedOperationException 바로 UnsupportedOperationException. 처음에는 이게 뭔가 싶었다. 왜냐면 테스트코드가 아닌 내가 직접 실행시킬 때는 잘 동작하던 애플리케이션이 테스트케이스만 실패하니 말이다. 내가 테스트케이스를 잘못 만진 줄 알고 깃허브에서 그대로 복붙해와서 붙여봐도 같은 예외가 터졌다. 찾아보니 저 에러는 List 타입에 데이터를 저장, 삭제할 때 ArrayList로 초기화 해주어야 할 수 있는데, new로 생성하지 않은..

article thumbnail
[회고] 우아한테크코스 5기 프리코스 2주 차 회고
우아한테크코스 2022. 11. 14. 19:56

1주 차 피드백 2주 차 과제를 제출한 후 이제야 회고록을 작성해본다. 우선 이번 2주 차 과제에서는 특별한 자료와 함께 메일이 도착했다. 1주 차 과제 공통 피드백과 무려 우테코에서 직접 촬영한 git 강의가 같이 있었다. 또한 우테코 이전 기수 분들이 촬영한 테코톡 영상 또한 첨부되어 있었는데, 정말 특별한 우테코만의 문화라고 생각한다. 나도 내년에 저기(테코톡)에 나오면 좋겠다. 우테코 관리자 분들이 약 3300명 정도 되는 규모의 인원의 코드들을 하나씩 살펴볼 수는 없기에 공통 피드백을 준 것 같지만, 그래도 나름 1주 차 과제가 힘겨웠던 분들을 생각해서 강의 자료나 피드백들을 상세하게 주셨다. 진행하면 할수록 더 매력적이다.. 피드백 중에서 기억에 남는 것이 있었는데, 메서드나 변수명을 축약하지..

article thumbnail
[회고] 우아한테크코스 5기 프리코스 1주 차 회고
우아한테크코스 2022. 11. 14. 14:47

프리코스 1주 차 회고록을 적어 놓았다가 이제야 마저 쓴다. 우아한테크코스 이하 우테코는 5기부터 1차 코딩 테스트 전형이 사라지고 프리코스가 일주일 늘어난 프로세스로 진행된다. 내가 오래전부터 정말 고대했던 우테코였기에 정말 열심히 준비했었다. 1주 차 프리코스는 코딩 테스트 자리에 프리코스가 대신 들어간 격이기 때문에 객체지향스럽게 코드를 짜거나 자바에 대한 깊은 이해도를 요구하지는 않았다. 하지만 과제를 해결하는 데에 마냥 짧은 시간이 걸린 것도 아니다. 내 나름대로 객체지향스럽게 구현하지는 않았지만, 기능과 역할을 잘 판단해서 메서드를 분리하고 리팩터링 하는 데에 많은 시간을 쏟았다. 계속 사용했지만 단점이 많은 매직 넘버 이번 과제를 진행하면서 매직 넘버라는 것을 처음 알게 되었다. 매직 넘버란..