![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bmAu57/btruiTLvaMc/BlzIFWkYyU9jFLRaVlSB51/img.png)
0. bytecode instrumentation jpa 의 프록시는 bytecode 조작으로 만들어집니다. 포스트의 최종목적은 OneToOne 의 양방향관계에서 프록시를 만들기 위해 발생하는 N+1 문제를 해결하는 것 입니다. 따라서 bytecode 을 조작하여 프록시 객체가 생성되지 않아도 되도록 해야하며, 또한 프록시가 초기화 되지 않더라도 나중에 필요한 순간에 객체를 가져올 수 있도록 해야합니다. 이를 위해 bytecode instrumentation 이 사용됩니다. bytecode instrumentation 은 bytecode 에 직접 수정을 가해서 소스파일의 변경없이 원하는 기능을 부여하는 기술입니다. gradle / maven 과 같은 빌드 도구의 설정파일에서 수정할 내용을 작성할 수 있습..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/x2EqC/btrul4rZEtQ/LgLtDRCu8C660SpXqpnpi0/img.png)
0. @OneToOne 의 양방향 연관 관계 다대일, 일대다, 다대다 와는 다르게 @OneToOne 매핑은 연관관계를 매핑할 수 있는 선택지가 두가지 있습니다. 아래와 같이 Post 와 PostDetail 엔티티가 있다고 생각해봅시다. @Entity class Post { @OneToOne(mappedBy = "detail") @LazyToOne(value = LazyToOneOption.NO_PROXY) private PostDetail detail; } @Entity class PostDetail { @OneToOne(fetch = FetchType.LAZY) @LazyToOne(value = LazyToOneOption.FALSE) private Post post; } 이 경우 비즈니스 로직상 더 ..