티스토리 뷰
스프링이 구현체를 만들어서 프록시 수법으로 전달함.
실제 원본객체를 상속받아서 프록시를 만듦.
원본객체를 상속받으면 자식타입이 되니까 객체를 비교했을 때
==은 false이지만(서로 다른 객체)
instanceof은 true(같은 타입)
실무에서 객체2개를 비교해야 하는 상황이 많을 것임.
DB를 조회했을 때 동일한 쿼리를 발생되면 동일한 객체에 일관성이 필요함.
SELECT를 3번한다면, 3개의 객체를 만드는 게 아니라 기존 객체가 3번 돌아옴.
일관성이 있어야 다른 곳에서 수정을 했을 때 반영이 되기 때문.
객체의 주소가 똑같아야지만, 여기서 수정했을 때 다른 곳도 반영이 되므로.
객체 주소가 다르면 안됨.
프록시는 원본 주소를 가져오는 것이 아니라
내가 필요한 것만 갖고 있다가
갖고 있지 않은 것을 요청했을 때는 원본에 있는 것을 가지고 와서 프록시로 꽂는 것임.
정확하게 필요한 부분에 대한 내용만 가지고 있는 게 프록시고
실제 원본 객체가 아니라 다른 객체임.
원본을 상속받으면, 원본에 있는 그대로를 쓸 수 있음.
대신 다 null임.
제일 필요한 부분들(PK)은 미리 값이 다 들어가 있으니 언제든지 ID값을 요청해도
매번 원본을 요청하는 것이 아니라 기존에 있었던 값을 요청할 수 있게 된다.
굳이 불필요한 쿼리가 날라갈 필요가 없다.
스프링이 미리 다 구현을 해놨음.
스프링이 구현한 거를 매번 가져오면 성능이 떨어진다.
미리 서버가 돌아갈 때 한번만 구현을 해놓고
필요할 때마다 가짜객체에 필요한 값들을 주입해서 들어오는 것임.
>> 프록시, 가짜객체. Proxy.
성능을 높이고자 원본을 대체해주는 객체.
'2022 > spring boot' 카테고리의 다른 글
day03[day02복습] (0) | 2022.11.03 |
---|---|
day02[spring MVC1] (0) | 2022.11.03 |
day02[spring MVC 실습] (0) | 2022.11.02 |
day02[spring MVC2, thymeleaf] (0) | 2022.11.02 |
day02[oracle cloud] (0) | 2022.11.02 |