Jpa ORM 강좌 #5

ims·2020년 11월 9일
0

JPA 프로그래밍

목록 보기
6/6

기본값 타입

  • 기본 자료값에 대해서는 call by value

  • class type에 대해서는 call by reference ( 참조에 의한 호출 ) 이기에 setValue같은 method가 있다고 가정하면, b에도 20이 들어감.

Embedded

@Embedded : 사용하는 곳에 표시

@Embeddable : 값 정의 하는 곳에 표시

-> 둘중 하나만 써도 되긴 하는데, 둘다 쓰는게 권장됨

  • DB 입장에서 Mapping 테이블은 같다

  • 잘 설계된 ORM application은 mapping한 테이블 수보다 클래스 수가 더 많다.


Entity도 삽입 가능

같은 속성의 Embeded type을 사용하고 싶을 때

@AttributeOverrides 사용

이런식으로 사용하면 된다.

값 타입

임베디드 타입 같은 값을 여러 entity에서 공유하면 위험하다.

ex)

member2.getHomeAddress().setCity("newCity");

만약 member1이 Address embeded type을 공유하고 있다면, member1의 값 역시 바뀜.

그래서 새로운 인스턴스를 만들어서 사용해야 한다.

--> Embeded type = 객체 타입

  • 객체 타입은 참조 값을 직접 대입하는 것을 막을 방법이 없다.

객체의 공유 참조는 피할 수 없다.

--> 그래서

불변객체

값 타입은 불변객체로 설정해야 한다.

  • 그래서 생성자로만 값을 설정하고, 수정자(Setter)를 만들지 않는 것

참고로 Integer와 String은 Java가 제공하는 불변 객체.

값 타입 비교

참조값간의 비교를 해야할 때

출력값 : false

  • equals, hashcode class안에 정의해주고, equals로 비교 ( equals 기본이 == 비교이기 때문에 overriding안하면 똑같이 false나온다 )

( 설정은 default하면 됨 )

profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글

관련 채용 정보