JPA 기초(16)
-
JPA의 데이터 타입 - 값 타입, 엔티티 타입(4)
값 타입의 비교 값 타입은 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 한다.. int a = 10; int b = 10; 둘은 a == b 가 true지만 객체의 비교는 참조값으로 하므로 false이다(당연..) 동일성 비교: 인스턴스 참조 값을 비교(==) 동등성 비교: 인스턴스 값을 비교(equals) 값 타입은 동등성 비교를 해야 한다. 값타입의 equals()메소드를 적절하게 재정의해야 한다. equals()의 기본 방식은 ==이기 때문이다. 인텔리제이가 뿌려주는..equals()를 받아 쓰면 되겠다. equals()를 오버라이딩 할 때는 hashCode()도 마찬가지로 구현해야 HashMap등 컬렉션에서 효율적으로 사용할 수 있다. 쉬운 내용이라 포스팅하기 민망하지만.. 포스팅 주..
2022.03.26 -
JPA의 데이터 타입 - 값 타입, 엔티티 타입(3)
값타입과 불변객체 값 타입은 복잡하고 어지러운 객체세상을 조금이라도 단순화하기위해 사용한다. 임베디드 타입 같은 값타입은 여러 엔티티에서 공유가 가능하다. 임베디드 타입은 값 타입임에도 불구하고, 임베디드 타입의 값을 변경하면 이를 공유하고 있는 여러 엔티티에서 전부 값이 변경된다. 첫번째 멤버의 embedded 타입인 도시를 변경하였는데 업데이트 쿼리는 두번 전송된다. Address address = new Address("Seoul", "mapo", "100"); Member member1 = new Member(); member1.setUsername("Kim"); member1.setHomeAddress(address); em.persist(member1); Member member2 = new ..
2022.03.26 -
JPA의 데이터 타입 - 값 타입, 엔티티 타입(2)
2-1) 기본 값 타입(primitive) - 이전 포스팅 참고 2-2) 임베디드 타입 임베디드 타입을 활용하면 새로운 값 타입을 직접 정의할 수 있다!! int, String과 같은 값 타입이다. 주로 기본 값 타입을 모아 만들어서 복합 값 타입이라고도 한다. ex) 회원 엔티티는 이름, 근무시작일, 근무 종료일, 주소 도시, 주소 번지, 주소 우편번호를 갖는다고 하자. 이 엔티티를 보면 근무 시작일-종료일 // 주소(도시, 번지, 우편번호) 묶고싶다는 생각이 들 것이다. 변경하면 회원 엔티티는 이름, 근무 기간, 집 주소를 갖는다. 임베디드 타입을 사용하면 이렇게 묶어낼 수 있다. private LocalDateTime startDate; private LocalDateTime endDate; pri..
2022.03.26 -
JPA의 데이터 타입 - 값 타입, 엔티티 타입(1)
jpa는 데이터 타입을 두가지로 분류한다. 1) 엔티티 타입 -@Entity로 정의하는 클래스 객체 -데이터가 변해도 식별자로 지속해서 추적이 가능하다. ex) 회원 엔티티의 키, 나이 값이 변경해도 식별자의 값으로 인식 가능하다. 2) 값 타입 - int, integer, string처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 - 식별자가 없고, 값만 있으므로 변경 시 당연히 추적 불가능하다. 숫자 100을 200으로 변경하면 완전히 다른값으로 대체된다.. 값 타입은 크게 세가지로 분류된다. 2-1) 기본값 타입: primitive type이라고 생각하면 쉽다. 자바가 기본적으로 제공하는 기본타입, 래퍼클래스, String등이 여기에 해당한다. 생명주기는 당연히 엔티티에 의존한다. 회원엔티티를..
2022.03.26