문제

· JPA
스프링은 컨테이너는 트랜잭션 범위의 영속성 콘텍스트 전략을 기본으로 사용한다. 트랜잭션이 같으면 같은 영속성 콘텍스트가 콘텍스트가 공유되고 트랜잭션이 끝나면 영속성 콘텍스트가 닫히는 것이다. 그럼 트랜잭션이 끝나고 엔티티에 지연 로딩으로 연결된 다른 엔티티를 불러오면 어떻게 될까? 보통 트랜잭션은 비즈니스 로직이 있는 서비스단에서 시작하고 종료한다. public class Member { ... @ManyToOne(fetch = FetchType.LAZY); private Team team; } Member member = memberService.getMember(1); // 트랜잭션 종료, 준영속 상태 member.getTeam(); // 종료 후 지연로딩으로 연결된 team 정보 조회 당연히 영속성..
· JPA
사이드 프로젝트 진행 중에 JPA의 N+1 문제가 발생하였다. 매장 목록 조회 시 매장에 등록된 해쉬태그를 가져오기 위해 일대다 관계를 맺고 있는데 이것 때문에 데이터당 한번씩 더 조회가 되고 있었다. @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.REMOVE }) @JoinTable(name = "tag_of_store", joinColumns = @JoinColumn(name = "store_id"), inverseJoinColumns = @JoinColumn(name = "store_tag_id")) private Set tags; 지금은 데이터가 적어서 문제가 안되지만 데이터 100개를 조회한다면 ..
실제 프로그램 알고리즘 회사에서 직원 임금을 계산하는 프록램을 개발한다고 가정하자. 해결할 문제 회사에서 매주 임금 총액을 계산하는 대화식 프로그램이 필요 프로그램이 수행되면 사원번호, 시간당 임금률, 일한 시간수를 입력 입력된 정보는 파일에 저장 총 임금액이 출력 일한 시간이 40시간이 넘으면, 넘은 시간은 임금률을 1.5배로 한다. 문제 해결을 위해 논의한 결과 각 직원의 데이터는 사원번호(empNum), 시간당 임금률(payRate), 일한 시간 수(hours)로 구성 그 외에 총임금(total), 개인별 총 수입(wages)이 필요 임금률은 시간 수 X 시간당 임금률, 40시간 이상은 1.5배 결과를 저장하는 파일은 payFile이라고 한다. 파일에 출력할 내용은 사원번호, 임금률, 일한시간, 개..
beekei
'문제' 태그의 글 목록