본문 바로가기
728x90
반응형

전체 글595

[JPA/Java] For property-based access both setter and getter should be present 문제 해결 @Access or @Column 임베디드 타입 변수를 사용하고자 할 때, Embedable 클래스에 응용 함수를 만들고자 할 때, getter를 사용하다보면 아래와 같은 상황이 발생한다. 이와 같은 이슈는 어떻게 해결할까? JPA 강사 김영한 님이 위의 이슈에 대한 질문에 대한 답을 남겨주었다. https://www.inflearn.com/questions/78106/embeddable-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%A7%88%EB%AC%B8-%EC%9E%85%EB%8B%88%EB%8B%A4 @Embeddable 사용시 질문 입니다. - 인프런 | 질문 & 답변 안녕하세요 강사님 @Embeddable 어노테이션 관련 부분을 실습 하고 있는데요 @Getter@Setter@Embeddablepublic class.. 2023. 3. 13.
[JPA/Java] 값 타입 3 (값 타입 컬렉션) 값 타입 컬렉션은 하나 이상의 값을 넣을 때 사용한다. 기존에 있었던 테이블 Member에 Address가 있는데, 주소에 대한 이력관리와 좋아하는 음식 정보를 넣고 싶다는 가정을 하면, 기존에 있었던 Address를 사용하여 주소 이력을 관리하기에는 한계가 있다. 또 좋아하는 음식이 여러 개라면? 여러 가지 갚을 넣어야 할 때 컬렉션을 이용해야 한다. 대략적인 설계는 아래의 그림과 같다. 그래서 컬렉션 프레임워크인 Set, List를 사용하였다, 값 타입에 컬렉션을 사용하려면.. @ElementCollection, @CollectionTable을 사용하여야 한다. 데이터베이스는 컬렉션을 Member 테이블에 컬럼을 종속시켜 같은 테이블에 저장할 수 없다. 그래서 컬렉션을 저장하기 위한 별도의 테이블이 .. 2023. 3. 13.
[Java/개념] 값 비교( '==' 동등 비교 vs equals() 객체 비교) 실무에서 값 비교를 쓸 때, 객체에 대해서는 보통 equals를 많이 쓴다. 기본 타입이랑 객체 타입의 값 비교가 다르다. 기본 타입은 값을 복사한다. 그래서 '==' 과 같은 동등비교가 가능하다. int a = 10; int b = 10; System.out.println("a == b = " + (a == b)); a == b = true 객체 타입은 '==' 와 같이 동등비교를 할 때 주소 값으로 비교한다. false가 나온다. Address address1 = new Address("city", "street", "10000"); Address address2 = new Address("city", "street", "10000"); System.out.println("(address1 == ad.. 2023. 3. 8.
[JPA/Java] 값 타입 2 (불변 객체) 값 타입은 복잡한 객체 세상을 조금이라도 단순화하려고 만든 개념인데, 따라서 값 타입은 단순하고 안전하게 다룰 수 있어야 한다. 예를 들어, 한 주소 객체를 선언 했는데, 선언한 주소를 두 명의 멤버에 넣고, 주소를 변경시키는 경우, 두 명의 멤버의 주소가 모두 바뀌게 된다. JpaMain.java Address address = new Address("oldHome", "oldStreet", "zipcoode"); Member member1 = new Member(); member1.setUserName("member1"); member1.setHomeAddress(address); em.persist(member1); Member member2 = new Member(); member2.setUser.. 2023. 3. 8.
[JPA/Java] 값 타입 1 (기본 값, 임베디드(복합 값) 타입) JPA는 ORM 방식의 기술로 객체를 테이블에 매핑시켜서 데이터를 관리한다. 객체를 필드로 넣는다고 가정할 때, DB에 데이터를 넣을 때 필드로 넣은 객체에 종속된 필드를 테이블에 같이 넣을 수 있다. 그에 대한 설명에 앞서, JPA의 데이터 타입 분류는 아래와 같다. JPA의 데이터 타입 분류 (1) 엔티티 타입 - @Entity로 정의하는 객체 - 데이터가 변해도 식별자로 지속해서 추적이 가능하다. - 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식이 가능하다. (2) 값 타입 - int, integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 - 식별자가 없고 값만 있으므로 변경시 추적 불가 - 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 한.. 2023. 3. 6.
[JPA/Java] 영속성 전이 : Cascade, 고아 객체 어떤 쇼핑몰 사이트에서 주문 정보가 들어왔다. 주문 테이블 구조는 Master, Detail 2개의 테이블 구조이고, 주문 정보가 들어올 때, 주문 상세 정보가 같이 들어올 때, 데이터를 일일이 넣어주는 소스를 넣는 것은 개발자 입장으로서는 참으로 불편한 일이 아닐 수 없다. 이럴 때 영속성 전이를 하여 CASCADE 속성을 넣어주면 편하다 다만 CASCADE는 하나의 마스터 테이블만을 참조할 때만 사용할 수 있다. 특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속상태로 만들고 싶을 때 CASCADE를 사용한다. 예 : 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장하는 형태 ※ 영속성 전이: 저장 @OneToMany(mappedBy="parent", cascade=CascadeType... 2023. 3. 3.
728x90
반응형