항해99 (96) 썸네일형 리스트형 항해99 after - 조회 API에 readOnly=true를 설정하면 성능이 개선될까? 조회 API에서 고려해야할 부분이 몇 가지 있습니다. 그중 하나가 트랜잭션입니다. 저는 실전 프로젝트에서 @Transactional 을 통해 트랜잭션을 처리했는데요. 그 중에서 오늘은 @Transactional의 readOnly 옵션에 대해 알아보도록 하겠습니다. 목차 1. @Transactional readOnly 옵션 2. 실제 프로젝트에 readOnly 적용하기 3. 성능 비교 1. @Transactional readOnly 옵션 스프링 공식 문서에 따르면 Read-only 상태를 넣으면 최적화에 유용할 수 있다고 합니다. 최적화가 되는 이유를 조금 찾아보면 아래와 같습니다. 1. 읽기 전용 트랜잭션에서는 레코드에 Lock 설정을 하지 않아도 된다. 2. Jpa를 사용할 경우 dirty checki.. 스프링5 프로그래밍 입문 - ch7. AOP 프로그래밍 - (3) 프록시 생성 방식 초보 웹 개발자를 위한 스프링 5 프로그래밍 입문을 더 잘 이해하기 위해 정리하기 위한 포스팅입니다. 목차 1. 프록시 생성 방식 2. execution 명시자 표현식 3. Advice 적용 순서 @Order 1. 프록시 생성 방식 이전 포스팅(스프링5 프로그래밍 입문 - ch7. AOP 프로그래밍 - (2) AOP)에서 만들어 뒀던 코드를 조금 변경해보자. 타입을 인터페이스에서 구현체로 변경해보자. 그리고 실행해보자. 다음과 같은 에러가 발생한다. 에러를 해석해보자. calculator 라는 빈의 타입은 RecCalculator 를 기대했다. 하지만 실제 타입은 Proxy18이었다. 여기서 기대한 대상은 개발자다. 개발자가 타입을 RecCalculator로 기대했으니 말이다. 그런데 실제 타입은 Pro.. 항해99 85일차 TIL1 나아가자 항해 안녕! 프로젝트는 완전히 끝이 났고 사실 항해가 끝이났다고 해도 무방한 것 같아요. 그리고 모의 면접을 봤습니다. 음... 엔지니어로서 아직은 내가 자질이 부족한 사람이 아닐까하는 생각이 들었다. 어제는 하루종일 우아한테크코스의 프로젝트를 살펴보면 패키지 레이어나 테스트 코드는 어떻게 짯고 내가 궁금했던 것들을 찾아봤다. 사실 조금 충격을 받았다. 어떤 부분에서는 도대체 내가 왜? 고민도 안하고 무지성으로 이런 코드를 짰을까하는 후회가 되기도 하였다. 배달의민족 CEO에게 뽑고 싶은 개발자를 물어보았다 지금 보면 부족했을지 몰라도 그게 어제의 최선이었다. 라는 말에 공감할 수 밖에 없었다. 중요한건 어제의 최선이었다는걸 인정하고 앞으로 나아가면 된다. 물론 취업을 미루고 공부를 더한다는 이야기는 아니고 취업 준.. 항해99 84일차 TIL1 IOC/DI IOC/DI를 공부하다보면 그게 그것 같다. 아직도 그렇다. IOC는 객체의 생성 및 생명주기 관리에 대한 제어권을 프레임워크에 넘기는 것이다. 우리는 스프링 프레임워크를 사용하니까 스프링 프레임워크에서 객체 생성 및 생명주기를 관리하는 것이다. IOC 예를 들어 CommentService 라는 인터페이스가 있다. 이를 위한 구현체가 SimpleCommentService ,ComplexCommentService 가 있다. 그리고 CommentController에서는 CommentService 객체를 사용해야 한다. 원래라면 CommentController 내부에 아래와 같이 CommentSerivce 객체를 생성한다. CommentService commentService = new SimpleCommen.. 항해99 83일차 base64 인코딩을 사용하는 이유 목차 base64 인코딩 why base64 들어가기 앞서, 혹여나 이 글을 보시는 분들을 위해 작성합니다. 우선 base64의 원리가 궁금하신분들이라면 아래 참고자료의 영상을 보시는게 더 나은 선택지일 수도 있습니다. 개발자님께서 설명을 정말로 잘하십니다. base64 인코딩 base64를 이해하기 위해서는 우선 base64코드, 아스키코드 2가지 준비물이 필요합니다. base64 인코딩을 수기로 해보도록하겠습니다. 제가 base64로 인코딩할 문자는 cs입니다. 1. 아스키코드에서 문자를 16진수로 변환합니다. c = 63 / s = 73 2. 16진수를 2진수로 변환합니다. 63 = 01100011 73 = 01110011 3. 2진수로 변환한 문자를 이어 붙입니다. 0110001101110011 .. 항해99 82일차 TIL1 양방향 연관관계 주의점 평소에 유튜브를 즐겨보는데 유튜브 알고리즘이 나를 이곳으로 이끌었다. 이 문제 답 모르면 제발 JPA 쓰지 마세요. 공부를 하거나. feat 서연 여기서 이 문제의 답은 JPA 대표 서적인 자바 ORM 표준 JPA 프로그래밍의 5.6 양방향 연관관계의 주의점 파트에서 언급한 내용입니다. 참고로 이 주의점을 해결하지 않는다고 해서 무조건적으로 문제가 생기는 것은 아니다. 하지만 알고 넘어가야 문제가 생겼을 때 빙빙 돌아가지 않고 문제를 금방 해결할 수 있습니다. 그리고 테스트 코드를 잘 작성하면 사전에 해당 문제를 인지할 수 있기도 합니다. 연관관계의 주인이 아닌 쪽에서 값을 입력한 경우 분명히 팀을 설정했다 하지만 아래와 같이 Member 에 팀이 결과 당연한 결과이다. 연관관계의 주인은 항상 N 쪽이기.. 항해99 81일차 TIL1 - 최종 프로젝트 더 개선하기 - 일정 생성 (2) 항해99 78일차 TIL1 - 최종 프로젝트 더 개선하기 - 일정 생성 (1) 저번 포스팅에서 부채로 남겨둔 내용을 처리하려고 합니다. 임시로 만든 메서드기 때문에 리팩토링이 필요합니다. 우선 create()에서 제가 생각해본 방안은 두 가지 입니다. 1. create() 하나로 통합 2. create() , createAll() 두개로 분리 1번 채택 다음과 같이 타입을 캐스팅하는 메서드를 만든다. 그리고 적용한다. 1번을 채택할 경우, create() 메소드의 재사용성이 매우 높아진다. 다른 알림 기능이 추가되더라도 create() 메서드로 모두 대체가 가능하다. 단 알림을 보낼 대상이 한 명이더라도 List를 생성한다는 점, DTO (데이터를 그저 옮기는 역할)정의에 어울리지 않을 수 있다. 그리고.. 항해99 80일차 TIL1 - 나는 개발을 좋아할 수 있다. 좋아한다. 좋아하고 싶다. 항해 실전 프로젝트가 끝이 났다. 오늘은 그냥 아무 얘기나 해보려고 한다. 주제는 '나는 개발을 좋아할 수 있다. 좋아한다. 좋아하고 싶다'이다. 나는 은행에 대한 막연한 동경이 있었다. 그래서인지 대학교를 졸업할 때 쯤 은행원이 되고 싶었다. 마음이 이끌렸다고 해야될까? 대학교 1학년 학생회에서 총무를 했을 때, 은행에 자주 방문했었는데 그때마다 은행에 오면 기분이 좋았던 기억 때문인지 그냥 은행원이 되고 싶었다. 6개의 시중은행에서 신한은행, 농협은행 서류에 붙게 되었고 운이 좋게 필기를 통과하여 면접까지 가게 되었다. 그때는 정말 드디어 은행원이 되는구나 김칫국을 얼마나 마셨는지 모르겠다. 떨어졌다. 그렇게 나를 탓했다. 그런데 내가 또 훌훌털어버리는건 정말 잘한다. 그렇게 지금은 기업금융을 하고 .. 이전 1 2 3 4 ··· 12 다음