728x90 반응형 백엔드19 [Spring Boot] JPA 프록시 프록시란? 프록시 : 실제 엔티티 객체 대신 생성되는 객체로, 엔티티의 데이터에 접근할 때까지 데이터 로딩을 지연시킵니다. 프록시 객체는 실제 엔티티 객체와 동일한 메서드와 속성을 가지며, JPA가 자동으로 생성하고 관리합니다. 좀 더 쉽게 설명하고자 하면 우리가 항상 Member을 조회할때 단순히 Member.getName만 알고싶은데 Member안에 Team까지 계속해서 로드할 필요가 없다. 이러한 불필요한 상황을 방지하고자 프록시를 사용한다. 여기서 프록시는 엔티티 클래스를 상속받아서 만들어진다. Hibernate가 내부의 프록시 라이브러리로 자동으로 상속해준다. 프록시 객체에 member.getName()을 호출해서 실제 데이터를 조회한다.프록시 객체는 실제 엔티티가 생성되어 있지 않으면 영속.. 2024. 9. 1. [Spring Boot] JPA 고급매핑 상속관계 매핑, @MappedSuperclass 객체지향적 속성을 살릴려면 추상화, 상속, 다형성, 캡슐화 이러한 4가지를 살릴 수 있어야 한다. 여기서 상속관계를 데이터베이스로 어떻게 매핑할 수 있을까? JPA에서는 3가지 전략을 제공하는데 조인 전략 (Joined Strategy)단일 테이블 전략 (Single Table Strategy)구현 클래스마다 테이블 전략 (Table per Class Strategy)로 나누어진다. 1. 조인 전략 (Joined Strategy)조인 전략은 상속관계에 있는 각 클래스를 각각의 테이블에 매핑하고, 쿼리 시 이들 테이블을 조인하여 데이터를 조회하는 방법입니다.장점:정규화된 구조로, 데이터의 중복이 최소화됩니다.하위 클래스의 데이터를 추가하거나 변경할 때, 부모 클래스 테이블에는 영향을 주지 않습니다.단점:조.. 2024. 9. 1. [Spring Boot] JPA 연관관계 매핑 우리가 보통 프로젝트에서 진행하는 엔티티들은 다른 엔티티와 관계가 있다. 하지만 객체는 참조를 사용하고 데이터베이스는 fk로 관계를 맺는다. 이런 다른 특징을 객체에서 매핑 시켜줄려면 단방향 관계 2개로 조인을 해주어야한다.이때 사용하는 매핑은 @JoinColomn을 사용한다. 이러한 연관관계를 매핑하기 위해선 3가지를 고려해야한다.(1) 다중성(2) 단방향, 양방향(3) 연관관계의 주인 다중성은 아래와 같은 다중성이 있다. -다대일(@ManyToOne)-일대다(@OneToMany)-일대일(@OneToOne)-다대다(@ManyToMany)여기서 거의 대부분 사용하는 것은 @ManyToOne이고 일대일과 다대다는 거의 사용하지 않는다. 사실 양방향으로 객체끼리 조회하기 위해선 @ManyToOne을 적용한.. 2024. 9. 1. [Spring Boot] @Bean, @Configuration, @Component 위 3가지는 Spring Bean을 등록할때 사용하는 어노테이션이다. 각 차이점을 정확히 알고자 정리한다. 우선 Spring Bean은 무엇일까? Spring Bean이란?? Spring IoC (Inversion of Control) 컨테이너에 의해 관리되는 객체를 의미합니다. Spring 애플리케이션의 구성 요소들로서, 애플리케이션의 주요 기능들을 담당하는 객체들이 빈(Bean)으로 등록된다. 이러한 빈들은 Spring 컨테이너가 생성하고, 그 생명 주기를 관리하며, 애플리케이션이 실행될 때 자동으로 주입된다. 덕분에 우리가 귀찮게 의존성과 생성자를 관리할 필요가 없다. Spring Bean의 주요 특징관리되는 객체: Spring Bean은 Spring IoC 컨테이너가 관리. 즉, 개발자가 직접 인.. 2024. 8. 30. 이전 1 2 3 4 5 다음 728x90 반응형