Reflection API와 하이버네이트(feat. JPA 전신)
·
Java/Spring
JPA에서 DB의 데이터를 객체로 어떻게 맵핑하나 공부하다보면 리플렉션에 대해서 알게된다.오늘은 이 리플렉션에 대해서 알아보겠다. 참고로 하이버네이트는 JPA가 Spring 진영의 공식 ORM이 되기 전에 있었던 오픈소스 ORM 라이브러리 이름이다. JPA를 공부하다보면 하이버네이트의 흔적이 곳곳에서 보이곤한다. 자바 리플렉션 API는 클래스의 메타데이터(구조)를 분석하여 private 접근제어를 무너뜨리고 데이터를 직접 주입할 수 있다. 자바 가상 머신(JVM)은 클래스를 실행할 때 해당 클래스의 모든 정보(필드 이름, 타입, 메서드 등)를 메모리의 메서드 영역(Method Area)에 저장해둔다. 일반적인 컴파일에서는 접근제어권한을 풀 수 없지만 리플렉션은 런타임에 메모리에 저장된 클래스 정보 자체를..