KOSTA/SpringBoot
SpringBoot - JPA(2)
놀코
2021. 8. 5. 18:08

JPA 테스트 코드 proxy 호출 메서드
@SpringBootTest
class ProductRepositoryTest {
@Autowired
private ProductRepository productRepository;
Logger log = LoggerFactory.getLogger(this.getClass());
@Test
@DisplayName("클래스이름과 메서드이름, 상위인터페이스이름등을 확인-ProxyPattern확인")
void test() {
Class clazz = productRepository.getClass();
log.error("클래스이름"+clazz.getName());
log.error("------------");
for(Method m: clazz.getDeclaredMethods()) {
log.error(m.getName());
}
log.error("------상위인터페이스 이름------");
for(Class inter: clazz.getInterfaces()) {
log.error(inter.getName());
}
}
}

@OneToMany(
//영속성전이
cascade = CascadeType.ALL
,
//JPA는 연관관계가 있는 엔티티를 조회할 때 defualt로 지연로딩을 합니다.
//여러 엔티티들과 종속적인 관계를 맺고 있다면 조인이 필요, 조인이 복잡할 수록 성능저하!, 정보가 필요하기 전까지 최대한 테이블에 접근하지 않는 방식을 사용합니다.
//즉시 로딩은 조인은 이용해서 정보를 처리합니다.
//즉시로딩을 안한다면 @Transactional로 처리할 수 도 있습니다.
fetch = FetchType.EAGER
,mappedBy = "order_info"
)