작성
·
85
0
내가 댓글 단 게시글을 조회할 때, @JPQL을 이용해서 다음과 같이 댓글 Repository에서 JPQL 사용해서 PostEntity를 반환하고 있는데, 이 방식이 혹시 문제가 있을까요?
@Repository
public interface CommentRepository extends JpaRepository<CommentEntity,Long> {
@Query("SELECT DISTINCT c.post FROM CommentEntity c WHERE c.user.userId = :userId")
Page<PostEntity> findPostByUserComment(@Param("userId") String userId, Pageable pageable);
}
질문은 다음 3가지 입니다.
1. CommentRepository에서는 CommentEntity로만 반환하고 CommentEntity.getPost()를 통해 게시글을 가져오는 게 맞을까요? 아니면 위 코드대로 진행해도 괜찮을까요? 실무에서 선호하는 방식이 궁금합니다.
내가 댓글 단 게시글을 조회하는거니까, CommentRepository에서 메소드를 만드는 게 맞다 생각했는데 혹시 PostRepository에서 메소드를 구현하는게 더 좋을까요?
만약 위 코드처럼 한다면, 다대일이기 때문에 fetch join을 추가해서 pageable 같이 써도 문제 없는게 맞을까요?
답변 2
0
안녕하세요. jayjoy05님
이 부분은 정답이 없습니다. 실무에서도 다양한 방식을 섞어서 함께 사용합니다.
이 부분도 정답이 없습니다. 만약 게시판 기능이 단순하다면 둘을 하나에 통합해서 관리하는 것이 좋은 방법이 될 수 있습니다. 다만 게시판의 기능이 복잡해진다면 둘을 분리하는 것이 더 나은 선택일 수 있습니다.
네 맞습니다 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. jayjoy05님의 질문에 대해서 살펴본 바에 따르면, 제가 접근 가능한 정보 중에는 jayjoy05님의 질문과 직접적으로 관련된 내용을 제공하는 정보가 없습니다. 그러나, jayjoy05님의 질문과 유사한 문제를 다루는 일부 정보를 제공해드릴 수 있습니다.
다대일 양방향에 대한 정리와 질문(질문 보기)
엔티티에서 equals 오버라이딩, fetch join 2번 질문(질문 보기)
스프링 데이터 JPA와 JPQL을 함께 사용할 경우 Repository에 대해 질문 드립니다.(질문 보기)
굳이 답변을 한다면, 실무에서는 양방향 매핑을 활용하여 CommentEntity로부터 PostEntity를 조회하는 경우가 많이 있습니다. 하지만, 특정 사용자에 의해 작성된 댓글에 묶여 있는 포스트를 조회한다는 비즈니스 요구사항에 직접적으로 접근하기 위해 jayjoy05님의 코드처럼 CommentRepository
에서 JPQL을 사용하는 것이 적절할 수 있습니다. 문제가 될 만한 상황은 대체로 성능과 관련된 부분에서 발생하는데, 이 때는 fetch join
등을 적절히 활용하여 해결하는 것이 일반적입니다.
실무에서는 요구 사항의 명확함, 성능, 그리고 코드의 복잡성 사이의 적절한 밸런스를 찾는 것이 중요합니다. 따라서, 이러한 방법 외에도 다양한 접근 방식이 가능할 수 있으며, 특정 상황에서 최적의 해결책을 찾기 위해 여러 방법을 시도해보는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
지식 공유해주셔서 항상 감사드립니다