일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Exception
- db
- transaction
- JDBC
- 스프링 핵심 원리
- SpringBoot
- 그리디
- springdatajpa
- Android
- QueryDSL
- 알고리즘
- 인프런
- JPQL
- kotlin
- 스프링
- Spring Boot
- pointcut
- Proxy
- http
- 스프링 핵심 기능
- java
- Greedy
- spring
- AOP
- jpa
- 김영한
- Thymeleaf
- 백준
- Servlet
- 자바
- Today
- Total
목록인프런 (528)
개발자되기 프로젝트
1. Address 임베디드 타입 Equals and HashCode 생성 시 Getter를 사용하도록 옵션 설정 getter를 사용하지 않고 필드에 직접 접근하면 프록시의 경우 계산이 안됨 ㅜ 그러니 getter사용하도록 . 값 타입을 사용하면 의미있는 메서드도 생성이 가능하다. validation도 공통으로 쓸 수 있고.. 여러 이점이 있음. @Embeddable public class Address { private String name; @Column(length = 10) private String city; @Column(length = 20) private String street; @Column(length = 5) private String zipcode; private String fu..
1. 값 타입 컬렉션이란?? 값 타입을 컬렉션에 담아 사용하는 것. 관계형 DB는 기본적으로 내부에 컬렉션을 담을 방법이 없음. 값만 넣을 수 있음. 그래서 컬렉션에 해당하는 것을 별도 테이블로 만들어야함. 즉 일대다 형태로 구성됨. 단 이때 값타입의 테이블은 각 속성들을 모아서 PK로 사용해야함. 만약 식별자를 만들어서 PK로 쓰면 엔티티가 됨 ㅋㅋㅋㅋ 2. 값 타입 컬렉션 값 타입을 하나 이상 저상할 때 사용 @ElementCollection, @CollectionTable 사용 @ElementCollection을 통해 값 타입 컬렉션으로 지정 @ColellectionTable을 사용해 테이블 생성 이 때 일종의 일대다 관계라 볼 수 있고, FAVORITE_FOOD와 ADDRESS가 "다"측이고, 따..
1. 값 타입 값 타입 : 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 함. 값이니까! 그런데 객체 타입은 ==비교하면 false가 나옴.. int a = 10; int b = 10; Address a = new Address(“서울시”) Address b = new Address(“서울시”) 2. 값 타입의 비교 동일성(identity) 비교와 동등(equivalence)비교를 구분해서 사용해야 한다. 동일성(identity) 비교 : 인스턴스의 참조값을 비교. == 비교 동등(equivalence)비교 : 인스턴스 값을 비교. equals() 사용 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야함! 값 타입의 equals() 메서드를 적절하게 재정의 필요(주로 모든 필드 사..
값 타입은 복잡한 객체 세상을 조금이라도 단순화 하려고 만든 개념이다. 따라서 값 타입은 단순하고 안전하게 다룰 수 있어야 한다. 1. 값 타입 공유 참조 임베디드 타임 같은 값 타입을 여러 엔티티에서 공유하면 위험함!!!!!!! side effect 발생 Address homeAddress = new Address("city", "street", "321654"); Member member = new Member(); member.setUserName("member1"); member.setAddress(homeAddress); em.persist(member); Member member2 = new Member(); member2.setUserName("member2"); member2.setAddr..
1. 임베디드 타입 새로운 값 타입을 직접 정의할 수 있음 JPA는 embedded type이라고 함 주로 기본 값 타입을 "모아서" 만들기 때문에 복합 값 타입이라고 함. int String과 같은 값 타입임! 2. 예시 회원 엔티티는 이름, 근무 시작일, 근무 종료일, 주소 도시, 주소 번지, 주소 우편번호를 가진다. 흠.. 공통적인 요소들이 있는데... 묶어보자. 회원 엔티티는 이름, 근무기간, 주소를 가진다. 이처럼 묶어낼 수 있는게 임베디드 타입임. Member의 구성 즉, Period, Address라는 클래스를 생성해서 값 타입으로 씀 3. 임베디드 타입 사용 방법 @Embeddable : 값 타입을 정의하는 곳에 사용 @Embedded : 값 타입을 사용하는 곳에 표시 기본생성자 필수~~ ..
1. JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능. 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가. 예) 숫자 100을 200을 변경하면 그냥 완전히 다른 값으로 대체됨! 2. 값 타입의 분류 기본 값 타입 자바 기본 타입 : int, double 래퍼 클래스 : Integer, Long String 임베디드 타입(embedded type, 복합 값 타입) x, y값을 하나로 합쳐서 좌표라는 값으로/. 컬렉션 값 타입(collection value type) 컬렉션에 기본 값..
1. Global Fetch 전락 설정 모든 연관관계를 지연 로딩으로 @ManyToOne, @OneToOne은 기본이 즉시로딩이니 지연로딩으로 바꿔주자. 2. 영속성 전이 설정 Order -> Delivery를 영속성 전이 ALL 설정 Order -> OrderItem을 영속성 전이 ALL 설정 3. GitHub : 210812 CASCADE, orphanRemoval GitHub - bsh6463/JPA_EXAMPLE Contribute to bsh6463/JPA_EXAMPLE development by creating an account on GitHub. github.com
1. 영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장. CASCADE를 사용하지 않으면 일일히 저장해 줘야한다. Child와 Parent는 양방향 다대일 관계 Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); parent.addChild(child1); parent.addChild(child2); em.persist(parent); em.persist(child1); em.persist(child2); tx.commit(); 흠 귀찮은데? 요 때 쓰는게 CASCADE Parent ..