본문 바로가기

전체 글112

Lazy Initialize Exception 방어코드 뷰에 필요한 엔티티를 미리 로딩해줌으로서 지연 로딩 익셉션에 대한 방어를 할 수있다.1. Global Fetch 전략 수정가장 간단한 방법으로 글로벌 페치를 fetch = FetchType.EAGER 로 잡아주면 즉시로딩을 하기 때문에 지연 로딩에 대한 문제가 발생하지 않는다. 단점해당 엔티티가 필요없는 경우에도 무조건 로딩한다.N+1 Problem 발생 가능성 2. JPQL 페치 조인기존 //JPQL select o from Order o //SQL select * from orderJPQL 페치 조인 사용 //JPQL select o from Order o join fetch o.orderItem //SQL select o.*, i.* from Order o join OrderItem i on o.o.. 2017.03.27
2. 스위스 여행에 비는 치명적이다. 마이엔펠트 이후로 우리는 많은 도시를 방문했다. 루체른, 인터라켄, 로이커바드, 베른 그리고 마지막 취리히. 그런데 글을 쓸 소재가 없다. 마이엔펠트 이후 모든 스위스 일정에서 비가 내리는 초유의 사태가 가장 큰 원인이다. 물론 중간중간 맑아지는 때도 있었지만 일정의 80% 이상이 비가 왔던 것 같다. 자연경관 감상이 주를 이루었던 스위스 여행에서 흐린 날씨와 비(심지어 폭우)는 치명적이었다. 유럽 여행하기에 최적의 기온과 날씨를 품은 5월에 이게 웬일인가 싶었다. 모든 계획이 다 틀어졌고 제대로된 여행은 단 하루도 하지 못했다. 심지어 로이커바드에서는 비를 맞으며 야외 온천을 했고 모든 여행 일정이 액티비티로 채워져있던 인터라켄에서는 하루도 쉬지 않고 3일 내내 비가 오는 탓에 집 밖에 나갈 수조차 없.. 2017.03.26
스프링 JPA 그리고 LazyInitializeException 1. 스프링 컨테이너의 기본전략 스프링 컨테이너를 사용하면, 컨테이너가 트랜잭션과 영속성 컨텍스트를 관리해준다. 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다.이는 다음을 의미한다.트랜잭션의 범위 = 영속성 컨텍스트의 생존 범위 즉 , 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고, 트랜잭션이 종료될 때 영속성 컨텍스트를 종료한다 2. @Transactional 어노테이션 @Transactional을 통해 동작하는 스프링 트랜잭션 AOP는 대상 메소드를 호출하기전에 트랜잭션을 시작하고 메소드가 종료되면 커밋을 하면서 종료한다. 이때 트랜잭션을 커밋하기 직전 JPA는 영속성 컨텍스트를 플러시해서 변경 내용을 데이타베이스에 반영한다. 트랜잭션을 시작할 때 영속성 컨텍스트를 생.. 2017.03.23
NULL 제약 조건과 조인 전략 JPA는 매핑관계의 필수 여부에 따라 실제 데이타베이스로 보내는 SQL 구문이 달라진다선택적 관계 @Entity public class Member { //... @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "teamId") private Team team; //... }@ManyToOne 의 optional 속성이 true (default) 이거나 @JoinColumn 의 nullable 속성이 true(default) 인 경우에는 Team이 없는 Member도 조회될 것을 보장해야 하기 때문에 Outer Join 을 수행한다. SELECT * FROM Member m left outer join Team t ON m.teamId = t.teamId.. 2017.03.21
1. 마이엔펠트. 하이디 마을. 우리가 꿈꾸던 스위스 그 자체였다. 이번 스위스 여행의 시작은 하이디 마을 마이엔펠트에서 시작했다. 보통 마이엔펠트를 설명할 때 일본 애니메이션 를 함께 언급하는데 이 애니메이션의 원작 동화의 배경지로 등장했기 때문이다. 를 보지 않은 사람도 애니메이션의 제목이 주는 분위기로 이 곳의 분위기를 연상할 수 있다. 마이엔펠트(Maienfeld) 마이엔펠트는 인구가 3,000명이 채 되지 않는 스위스 동부의 작은 도시이다. 처음 들어섰을 때 감도는 고즈넉한 분위기는 도시 전반에 걸쳐 자리잡고 있다. 곳곳에 포장되지 않은 울퉁불퉁한 붉은 벽돌 길은 그런 분위기를 더욱 자연스럽게 만든다. 물론 캐리어를 끄는 여행객에겐 굉장한 불편함으로 다가오겠지만. 마이엔펠트에서 조금 더 안쪽으로 가면 이 도시를 유명하게 만든 하이디 마을(Heididorf)이 있.. 2017.03.19
7. 뮌헨. 님펜부르크 궁전. 한적함. 여유로움. 2년 전 방문했던 님펜부르크 궁(Nymphenburg Palace)을 다시 찾았다. 본궁인 레지덴츠(Residenz)가 뮌헨 시내 중심에 자리 잡고 있는 것과는 달리 님펜부르크 궁은 별궁으로 뮌헨 시내에서 차량으로 15분 정도 떨어진 거리에 있다. 궁전으로 들어가는 길목에는 호수를 따라 양쪽으로 길이 뻗어 있다. 이때부터 정원 끝까지 뻗어 있는 좌우 대칭이 시작된다. 이 철저한 대칭을 따라 길을 걷고 있으면 괜한 안도감이 생긴다. 님펜부르크 궁 입구 여느 궁전과 성들이 그러하듯이 마냥 '관광지'스러울 것만 같은 님펜부르크 궁은 의외로 그렇지 않다. 고요하고 한적하다. 시내에서 도보로 찾아오기에는 무리가 있어서인지 활기차고 북적한 시내와는 전혀 다른 분위기가 느껴진다. 이곳에는 다양한 사람들이 있었다. 정.. 2017.03.18