728x90 반응형 분류 전체보기582 [JPA/Java] 프록시(Proxy) 프록시 기초 프록시란? 프록시는 진짜 객체 대신에 가짜 객체로서 진짜를 대신해주는 개념 Hibernate는 지연 로딩을 구현하기 위해 프록시를 사용한다. 프록시를 사용할 때는, EntityManager에서 getReference() 를 사용하여 진짜 객체를 참조하여 가짜 객체를 만든다. 진짜 객체를 호출할 때는 em.find() 를 사용하지만, 가짜 객체는 em.getReference() 를 사용한다. 프록시의 특징은 다음과 같다. 1) 실제 클래스를 상속 받아서 만들어진다. 2) 실제 클래스와 비슷하다. 3) 사용하는 입장에서는 진짜 객체인지, 프록시 객체인지 구분하지 않고 사용해도 된다. Member 클래스를 예제로, 임의로 데이터를 생성하여 인스턴스를 생성하고, 인스턴스를 영속시킨 다음, 객체를 참.. 2023. 2. 27. [JPA/Java] 고급 매핑 (상속관계 매핑<조인, 단일 테이블>, @MappedSuperclass) 상속관계 매핑 - 관계형 DB는 상속 관계가 아니다. - 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. - 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 - 각각 테이블로 변환 → 조인 전략 - 통합 테이블로 변환 → 단일 테이블 전략 - 서브타입 테이블로 변환 → 구현 클래스마다 테이블 전략 주요 어노테이션 - @Inheritance(starategy=InhereitanceType.XXX) - JOINED : 조인 전략 - SINGLE_TABLE : 단일 테이블 전략 - TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 - @DiscriminatorColumn(name="DTYPE".. 2023. 2. 21. [JPA/JAVA] 다양한 연관관계 매핑 (N:1, 1:N, 1:1, N:M) 연관관계 매핑 시 고려사항 3가지가 있다 - 다중성에 있어서 어떤 관계인지 - 단방향인지, 양방향인지 - 연관관계의 주인은 누구인지 다중성은 4가지의 관계가 있다 - 다대일(N:1) : @ManyToOne - 일대다(1:N) : @OneToMany - 일대일(1:1) : @OneToOne - 다대다(N:M) : @ManyToMany 단방향, 양방향 관계에 있어서 - 테이블 : 외래 키 하나로 양쪽 조인이 가능하다. : 원래 방향이라는 개념은 없다 - 객체 : 참조용 필드가 있는 쪽으로만 참조가 가능하다 : 한쪽만 참조하면 단방향이고 : 양쪽이 서로 참조하면 양방향이다. 연관관계의 주인은 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 객체의 양방향 관계는 A → B, B → A 처럼 참조가 2군.. 2023. 2. 20. [H2 Database / Database] 스프링 부트 개발 시 ddl 외래키 참조로 인해 발생하는 문제 및 해결방안 ① (org.hibernate.tool.schema.internal.exceptionhandlerloggedimpl handleexception warn: generationtarget encountered exception acce.. 김영한(우아한형제들 기술이사)님의 JPA 강의를 듣다가 발생한 문제가 있다. 예제를 그대로 따라하다가 ① org.hibernate.tool.schema.internal.exceptionhandlerloggedimpl handleexception warn: generationtarget encountered exception accepting command : error executing ddl 와 같은 에러가 발생했다. 정확히는 경고문이지만, 프로그램이 원하는 대로 실행되지 않은 경우가 발생한다. 프로그램의 생명은 정확히 데이터를 처리할 수 있는 것이거늘... 그래서 이 오류를 고쳐야 한다. 이 오류를 고치기 위해서는 H2 Console의 버전을 바꿔줘야 한다. 만약 버전이 1.4.200, 버전이 200.. 2023. 2. 15. [JPA/java] 연관관계 매핑 (단방향, 양방향, 객체, 테이블, 기본키, 외래키 등) 연관 관계에 대한 예를 들기 위해서, 하나의 예를 들어보자. 1) 회원과 팀이 있는데, 2) 회원은 하나의 팀에만 소속될 수 있고, 3) 회원과 팀은 N:1관계이다. 연관 관계가 없는 객체를 테이블에 맞춰 모델링을 하면 아래와 같이 표현할 수 있다. 이것을 소스코드로 표현하면 아래와 같다. (Getter and Setter 생략) Member.java @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; } Team.java @Entity public class Team .. 2023. 1. 25. [H2 Database / Database] 새로운 Repository 생성 후 귀찮아서 비밀번호 없애고 싶을 때 Create a new database 클릭 이렇게 뜨는 데 대충 비번 적고 create 하면 repository 명이 해당 디렉토리 내에 중복되지만 않으면 그냥 생성된다. 실행하면 위처럼 뜨는데 새로 만든 repository 명을 입력하고 ID, PW 입력하고 연결 클릭 SQL 문 입력칸에 ALTER USER sa(사용자가 입력했던 사용자 명) SET PASSWORD ''(공란) 하면 그냥 하이패스로 로그인이 가능하다. 2023. 1. 22. 이전 1 ··· 25 26 27 28 29 30 31 ··· 97 다음 728x90 반응형