본문 바로가기
반응형

[서버]104

Docker 사용하기 사전 준비사항으로 DokerFile을 현재 디렉토리에 정의한다. 도커 이미지 생성 docker build -t 이미지명 .(현재디렉토리) 도커 컨테이너 생성=실행 docker run --name 컨테이너명 -p 80:80 -d 이미지명 -p 뒤에 처음으로 나오는 80은, 호스트로 들어오는 포트를 의미하며 그 다음의 80은 현재 컨테이너의 80 포트로 연결한다는 의미이다. -d는 데몬, 즉 백그라운드로 실행한다는 의미이다. 도커 컨테이너 중지 docker stop 컨테이너명 도커 컨테이너 재시작 docker start 컨테이너명 도커 컨테이너 삭제 docker rm 컨테이너명 현재 도커 이미지들 나열 docker images 도커 이미지 삭제 docker rmi [이미지id] 동작중인 컨테이너 확인 doc.. 2023. 4. 11.
순환참조가 문제 삼아지는 시기 @EntityGraph(attributePaths = ["comments"]) fun findOneWithCommentsById(id: Long) : Optional 위 코드는 동일한 전제라고 본다. 순환참조 발생 안함 @GetMapping("/marathon/{id}") fun getMarathon(@PathVariable id: Long): ResponseEntity { return ResponseEntity.ok(MarathonResponse.of(marathonService.getMarathon(id))) } @Transactional fun getMarathon(id: Long): Marathon { val marathon = marathonRepository.findOneWithComments.. 2023. 4. 10.
ManyToMany 관계에 데이터 추가(INSERT) 하기 User 테이블과 Marathon 테이블이 ManyToMany relationship을 갖고 있고 join table은 user_subscription 이라고 보자. // UserService @Transactional fun saveMarathon() { val user = userRepository.findById(userId).orElseThrow() // 유저 가져옴 val marathon = marathonRepository.findById(marathonId).orElseThrow() // 마라톤 가져옴 user.subscribedMarathons.add(marathon) // 유저가 마라톤 구독 } 이렇게 한 쪽에서만 저장하면 된다. 그러면 user_subscription 조인 테이블에 적용.. 2023. 4. 10.
유저와 게시글 N : M 에서의 Relation SpringBoot JPA를 설계할 때, 유저가 게시글에 좋아요를 누르는 기능을 구현할 수 있다. 이 때, 유저와 게시글은 N : M 관계가 되는데 User entity와 Post Entity를 ManyToMany 관계로 엮어서 자동으로 like라는 join table을 생성할 수 있고 User entity와 Like 테이블을 one to many, Post와 Like Table을 one to many 해서 동일한 효과를 기대할 수 있다. 이 둘의 차이는, 우리가 직접 join 테이블을 생성하느냐의 차이이다. 전자는 자동 생성이고 후자는 우리가 명시적으로 Like class를 따로 정의해서 entity를 명시적으로 정의한다. 후자의 경우의 장점은, 다른 필드들을 추가적으로 정의해줄 수도 있어서 확장성이 .. 2023. 4. 7.
반응형