본문 바로가기

반응형

컴퓨터/Spring + JPA

(6)
[인텔리제이 DTO generator] json data 자동으로 entity class 생성하기 최근 다양한 api을 활용하여 데이터를 받아오는 작업을 많이 하고 있다. 많은 api들이 JSON 형태로 데이터를 제공하는데, 데이터를 받아오는 과정에서 DTO class를 만들어 받아오고 있다. JSON 포멧이 간단하다면 DTO class를 쉽게 작성할 수 있지만, 조금만 복잡해지면 상당히 귀찮아진다. 좀 편하게 이 문제를 해결하려고 알아보는 도중 인텔리제이에서 지원하는 플러그인을 활용하는 방법을 찾게되었다. 아래 URL에서 설치를 하거나, 인텔리제이에서 shift를 2번 눌린 후 plugins 을 검색하고, DTO generator를 설치하면 된다. https://plugins.jetbrains.com/plugin/7834-dto-generator DTO generator를 사용하여 아래와 같은 JS..
[해결방법] JPA MySQL server version for the right syntax to use @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor public class BookWord { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_word_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "book_id") private Book book; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "word_id") private Word word; private Integer..
관계형 db vs 그래프 db에 대한 고민 신규 프로젝트를 진행하는 도중 db 설계한 내용을 시니어 개발자분께 보여드렸더니, 해당 도메인에 관계형 db를 사용 할 시 성능문제가 발생 할 수 있다는 피드백을 받았고, 그래프 db를 사용하는 것을 검토해보라는 피드백을 받아 내용을 정리해보려고 합니다. 먼저 그래프 db는 관계형 db와 아래와 같은 차이점이 있습니다. 새로운 속성 추가시 관계형 db 새로운 칼럼을 추가하고, 외래키 등을 이용해 연관관계를 맺어주고 제약조건 등을 설정해주는 과정을 거쳐야한다. 그래프 db 새로운 노드를 추가하고 다른 데이터와 연결해주는 과정만 거치면 쉽게 속성을 추가 할 수 있다. 처리 속도 관련 관계형 db 다른 테이블을 join해야 하는 경우가 많을시, depth가 깊어지게 될 시 성능에 대한 부담이 계속해서 증가한다..
[Spring JPA] OneToOne N+1 문제 (원인 해결방법 포함) 먼저 문제 상황은 이러하다. 상황 설명 : 1. bbs와 user 는 ManyToOne 양방향 관계이고 Lazy로딩으로 설정되어있다. 2. 게시글을 페이징하여 가져올 필요가 있다. 게시글을 가져올때 작성자 닉네임을 함께 가져와야 하기 때문에 user 테이블과 fetch join(EntityGraph)를 통해 성능최적화를 하였다. 3. 위 사항까지만 있었을때는 쿼리 한번으로 모든 정보를 가져올 수 있었고, 성능문제가 발생하지 않았다. 4. 새로운 기능 추가를 위해 game 테이블을 추가로 생성했다. user 와 game은 OneToOne양방향 관계이며 Lazy로딩으로 설정되어있다. 5. game테이블을 생성했는데, 예상하지 못한 곳에서 문제가 발생했다. 게시판을 조회하니 아래와 같은 의도하지 않은 쿼리가 ..
[스프링] spring bean 과 java bean의 차이점! 먼저 spring bean은 Spring Ioc 컨테이너에 등록되어 관리되고 있는 객체라고 말 할 수 있다. spring bean을 IoC 컨테이너에 등록하는 방법은 크게 2가지로 나뉜다. 1. Component Scan을 통한 등록 ( annotation을 이용한 방법 )2. 빈 설정파일에 직접 등록 @Component 어노테이션이 붙어 있는 클래스, 인터페이스 등은 자동으로 IoC컨테이너에 등록되게 된다.@Controller, @Service, @Entity 등도 클래스 파일을 열어보면 내부적으로 @Component 어노테이션을 사용한다. 빈 파일에 직접 등록하는 방식은 아래와 같이 진행된다.@Configuration public class SampleConfiguration { @Bean publi..
[해결방법] [spring boot] ResourceHttpRequestHandler - Path with "WEB-INF" or "META-INF" spring boot 에서 템플릿 엔진을 thymeleaf 에서 jsp로 바꾼후 페이지를 로드하려 했을때 아래와 같은 오류가 발생했다. ResourceHttpRequestHandler - Path with "WEB-INF" or "META-INF": 로그를 살펴봤을때 WEB-INF/views/main.jsp 경로를 표시해주는 것으로 보아 controller와 application.yml에서 아래와 같이 지정해준 경로는 제대로 적용 되는 것 같다. 원인 : spring boot 내장 톰캣을 사용하는 경우 jsp페이지를 처리할 서블릿을 추가하지 않아 발생하는 오류 입니다. 해결방법 : 아래와 같은 의존성을 추가해주면 됩니다. gradle : compile('org.apache.tomcat.embed:tomc..

반응형