놀코에 오신 것을 환영합니다.

놀아보자 코드랑

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());
		}
	}


}

jpa내에서는 seq.naxtVal() 처리가 안되고, max값을 가져와 처리한다.

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