LANGUAGE/Java

📌 프록시 1) 배경 엔티티를 조회할 때 연관된 엔티티가 존재하는 경우 두 가지 방법으로 조회 방법이 나뉜다. 연관된 엔티티를 데이터베이스에서 즉시 조회하는 경우와 프록시로 조회하는 경우다. 이에 따라 즉시 로딩, 지연 로딩으로 나뉘는 데 이 중 프록시를 활용한 전략법은 지연 로딩(LAZY)에 해당한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아닌, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 그렇다면 프록시란 무엇일까? 2) 정의 프록시 객체 : 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체 프록시 클래스는 실제 클래스를 상속 받아서 만들어지므로 실제 클래스와 겉 모양이 같다. 따라서 가짜 객체인지 진짜 객체인지 구분하지 않고 사용하면..
📌 @MappedSuperclass @MappedSuperclass 공통 매핑 정보를 상속할 목적으로 사용 🐾 해당코드 보기 @MappedSuperclass public abstract class BaseEntity { @Id @GeneratedValue private Long id; private String name; } @Entity public class Member extends BaseEntity{ // id 상속 // name 상속 private String email; } @Entity public class Seller extends BaseEntity{ // id 상속 // name 상속 private String shopName; } BaseEntity 는 테이블과 매핑되지 않고 단순..
들어가기 전 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이란 개념이 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 상속과 가장 유사하다. ORM에서 말하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다 @Inheritance(strategy=InheritanceType.XXX)와 같이 설정할 수 있다. 📌 조인 전략_Joined Strategy @Inheritance(strategy=InheritanceType.JOINED) 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 키를 받아서 사용하는 전략 1) @DiscriminatorColumn / @DiscriminatorValue @Inheritance(strategy = Inher..
📌 @Column 컬럼 매핑 1) name @Column(name = "name") private String username; 필드와 매핑할 테이블의 컬럼 이름 데이터베이스에 저장되는 이름을 name ="" 으로 지정할 수 있다. 2) insertable, updateable @Column(name = "name", updatable = "false") private String username; insertable = "false" 로 지정할 경우, 데이터베이스 스키마 자동 생성에서 해당 필드는 제외된다. updatable = "false" 로 지정할 경우, 업데이트에서 제외된다. 3) nullable @Column(name = "name", nullable = false) private String..
31daylee
'LANGUAGE/Java' 카테고리의 글 목록