분류 전체보기
-
[JPA] @OneToOne 관계에서 N + 1 발생하는 이유가 무엇일까?Server/Spring 2022. 6. 4. 00:38
@OneToOne 관계에서 N + 1이 발생하는 이유가 무엇일까? 이번 글에서는 @OneToOne 관계에서 N + 1 문제가 발생하는 원인이 무엇인지 해결하기 위해서는 어떤 대안들이 있는지 정리해보겠습니다. OneToOne 관계의 예시를 들기 위해서 File - Thumbnail_Image로 예시를 들어 정리해보겠습니다. 하나의 File에는 Thumbnail_Image 하나만 존재할 수 있는 상황입니다. 그리고 File이 생성된 후에 Thumbnail Image가 생성될 수 있습니다.(File이 없다면 Thumbnail_Image는 존재할 수 없습니다.) 위와 같은 조건이 있기 때문에 File - Thumbnail_Image 사이는 @OneToOne 관계입니다. @OneToOne 관계는 어떤 테이블에서 ..
-
2년 동안의 1일 1커밋을 그만 두며..Retrospect 2022. 3. 9. 11:07
2년 동안의 1일 1커밋을 그만두며.. 2021년 7월에 1일 1커밋을 1년 7개월 동안 하면서 느낀점 이라는 제목으로 가볍게 중간 회고를 작성한 적이 있었는데요. 이번 글에서는 2년 동안 진행해왔던 1일 1커밋을 그만두면서 라는 제목으로 1일 1커밋 마지막 회고를 진행해보려 합니다. 1일 1커밋을 시작한 이유는? 2019년 까지의 저는 학교 수업은 열심히 듣는 학생이었기에, 학교 수업 외에 개인 적인 공부를 하지는 않아서 웹/앱 개발을 해본 경험이 전혀 없었고 Git, Github도 사용해본 적이 없었습니다. 그러다 보니 2019년 2학기가 되었을 때 더 이상 학교 공부만 해서는 안되겠다는 생각에 외부 활동들을 조금씩 알아보게 되었는데요. 이 때 간단한 외부 활동을 하면서 만났던 한 분이 있는데, 이 ..
-
개발자를 꿈꾸는 대학생의 2021년 회고Retrospect 2022. 1. 4. 00:18
2021년 회고 회고를 쓰는 이유는 내가 2021년에 어떻게 살았는지를 되돌아보고, 2022년에는 어떤 목표를 가지고 시작할지에 대한 정리를 하기 위해서다. 그리고 2020년 에 비해 올해는 얼마나 달라졌는지도 정리하기 위해서이다. 겨울 방학 2021년이 되었을 때 나는 재수를 했기에 4학년이 되었고, 나도 이제 취준 시작이라는 마음에 설렘과 걱정을 가지고 겨울 방학을 보냈던 것 같다. 가장 먼저 2020년 까지는 SOPT IT 동아리를 하면서 JavaScript, NodeJS, Express로 백엔드 개발을 했다. 하지만 2021년에는 Spring을 공부해서 프로젝트를 해보고 싶었다. 그래서 겨울 방학동안 JAVA의 동작 원리를 깊게 공부해보려 노력했다. 방학 동안 자바, 알고리즘 공부만 하다 보니 자..
-
[Spring] Spring Security, React를 사용하면서 CORS 허용하는 방법Server/Spring 2021. 12. 23. 20:26
Spring에서 CORS 해결하는 법 이번 글에서는 개인적인 프로젝트를 하면서 겪었던 SOP 문제를 CORS를 허용해주면서 해결했던 과정에 대해서 공유해보려 합니다. (이 글에서는 CORS가 무엇인지에 대해서는 자세히 다루지 않겠습니다.) 참고로 프로젝트에서 백엔드는 Spring Boot, 프론트엔드는 React를 사용하였습니다. CORS란 무엇일까? CORS가 무엇인지 간단하게 알아보겠습니다. CORS(Cross-Origin Resource Sharing)는 교차 출처 리소스 공유라고 합니다. 여기서 교차 출처라고 하는 것은 다른 출처를 의미하는 것입니다. 즉, 브라우저에서 막고 있기 때문에 CORS를 허용해주어야 접근이 가능합니다. 출처(Origin)은 무엇일까? 위의 보이는 것처럼 도메인에서 Pro..
-
[Spring] AWS EC2에서 Spring Access log, logger log 저장하는 법Server/Spring 2021. 12. 9. 19:57
Spring 실시간 로그, 엑세스 로그 확인하는 법 이번 글에서는 Spring Boot를 AWS EC2 Linux2에 배포했을 때 실시간으로 로그가 찍히는 것을 확인할 수 있는 방법과 엑세스 로그를 확인하는 법에 대해서 공유해보려 합니다. 실시간 로그 보는 방법은 여러가지가 있겠지만 제가 생각하기에 괜찮다 싶은 방법입니다. 이번 글은 이미 jar 파일이 AWS EC2에 있다고 가정하고 작성하겠습니다. 만약 jar를 EC2에 올리는 법이 궁금하시다면 여기 를 보고 오셔도 좋을 거 같습니다. jar 실시간 로그 볼 수 있도록 실행하기 nohup java -jar /home/ec2-user/*.jar --logging.file.path=/home/ec2-user/ --logging.level.org.hiber..
-
[Spring] 스프링에서 의존성 주입을 하는 3가지 방법Server/Spring 2021. 11. 29. 01:32
다양한 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메소드 주입 주입 방법은 크게 4가지가 있는데 하나씩 알아보겠습니다. 생성자 주입 이름 그대로 생성자를 통해 의존 관계를 주입하는 것입니다. 생성자 1개이면 @Autowired를 생략할 수 있습니다. @Component public class TestComponent { private TestRepository testRepository; // 생성자 주입 public TestComponent(TestRepository testRepository) { this.testRepository = testRepository; } @PostConstruct public void test() { System.out.println..
-
[Intellij] Intellij에서 ERD 이쁘게 만드는 법Tool/Intellij 2021. 11. 29. 00:45
Intellij 에서 ERD 만드는 법 이번 글에서는 Intellij로 ERD를 이쁘게 만드는 법이 있어서 공유해보려 합니다! (대신 제가 알기로는 Ultimate 사용자만 가능한 것으로 알고 있습니다.😅) Intellij 오른쪽에 보면 위와 같이 DB 관련 설정을 할 수 있는 곳이 있는데요. 위에 보이는 순서대로 누르겠습니다! URL: jdbc:mysql://myEndPoint.ap-northeast-2.rds.amazonaws.com 만약 AWS RDS를 사용한다면 URL에 위의 형태와 같은 MySQL EndPoint 주소가 있을 것인데요. 그 주소를 위의 형태처럼 URL에 적겠습니다. 그리고 Driver는 저는 그냥 MySQL을 사용해서 MySQL을 찾아서 선택했습니다. URL을 잘 입력했다면 위와..
-
[Spring] Transactional Propagation 정리하기Server/Spring 2021. 11. 28. 23:52
@Transactional Propagation 알아보기 이번 글에서는 Spring Transactional 어노테이션에서 propagation 특징에 대해서 정리해보려 합니다. Propagation 옵션 설명 REQUIRED 기본 옵션 부모 트랜잭션이 존재한다면 부모 트랜잭션에 합류, 그렇지 않다면 새로운 트랜잭션을 만든다. 중간에 자식/부모에서 rollback이 발생된다면 자식과 부모 모두 rollback 한다. REQUIRES_NEW 무조건 새로운 트랜잭션을 만든다. nested한 방식으로 메소드 호출이 이루어지더라도 rollback은 각각 이루어 진다. MANDATORY 무조건 부모 트랜잭션에 합류시킨다. 부모 트랜잭션이 존재하지 않는다면 예외를 발생시킨다. SUPPORTS 메소드가 트랜잭션을 필..