전체 글(73)
-
프록시와 연관관계 정리
프록시란? JPA 에서 프록시는 실제 엔티티 객체 대신 데이터베이스 조회를 지연할 수 있는 가짜 객체를 의미합니다. 프록시 기초 em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에서 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객체의 참조를 보관한다. 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. 클라이언트가 getName() 메소드를 호출하면 프록시 객체에서 영속성 컨텍스트에 초기화 요청을 보낸다. 영속성 컨텍스트는 db를 조회하여 실제..
2023.06.25 -
h2 테이블 삭제 안되는 오류 - maven
h2 데이터베이스 오류인데 이럴 경우에는 pom.xml에 org.hibernate hibernate-entitymanager 5.4.13.Final com.h2database h2 1.4.200 추가를 해주면 문제가 해결됩니다.
2023.06.24 -
jpa - 고급매핑 정리
이번에는 jpa 고급매핑에 대해서 정리해보겠습니다. 상속관계 매핑 - 관계형 데이터베이스는 상속 관계x - 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 - 상속관계 매핑: 객체의 상속과 구조와 db의 슈퍼타입 서브타입 관계를 매핑 조인 전략 : 각각 테이블로 변환 -> 주로 사용 단일 테이블 전략 : 통합 테이블로 변환 -> 간단할 때 사용 구현 클래스마다 테이블 전략: 서브타입 테이블로 변환 -> 사용안함 조인전략 @Inheritance(strategy = InheritanceType.JOINED) 단일 테이블 전략 @Inheritance(strategy = InheritanceType.SINGLE_TABLE) 구현 클래스마다 테이블 전략 @Inheritance(strategy = Inh..
2023.06.24 -
jpa - 다양한 연관관계 매핑
jpa의 연관매핑에 대해서 정리를 해보겠습니다. 연관관계 매핑시 고려해야 하는 사항은 1. 다중성 2. 단방향, 양방향 3. 연관관계의 주인 jpa에서 다중성 (양방향 매핑일 경우 앞에 나온게 주인이라고 가정) 1. 다대일(@ManyToOne) 2. 일대다(@OnetoMany) : 다대일을 사용하자. 3. 일대일(@OneToOne) 4. 다대다(@ManyToMany) : 실무에서 쓰면 안된다. 단방향, 양방향이란 테이블에서는 외래키 하나로 양쪽 조인 가능해서 방향이라는 개념이 없다. 객체에서는 참조형 필드가 있는 쪽으로만 참조 가능하다. 예를 들어 Team이라는 클래스와 Member라는 클래스가 있다. Member클래스 안에 Team형 필드를 선언하면 Member클래스는 Team을 참조할 수 있다. 이 ..
2023.06.24 -
jpa 연관매핑 기초 - 단방향, 양방향
Member 클래스 안에 Team이라는 클래스가 존재한다. 위와 같은 그림일 때 단방향 연관관계를 맺고 있다고 한다. @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public v..
2023.06.22 -
java: Compilation failed: internal java compiler error
pom.xml에서 org.apache.maven.plugins maven-compiler-plugin 8 8 를 추가해주면 된다. 오류가 발생하는 이유는 maven으로 프로젝트를 열 때 1.5버전이기 때문에 자바 버전이 안 맞기 때문이다. 위의 예시는 필자가 자바 1.8버전을 사용하고 있어 버전을 맞춰준거라고 생각하면 된다.
2023.06.20