728x90 반응형 전체 글602 [JPA/Java] 객체지향 쿼리 언어 종류 JPA는 다양한 쿼리 방법을 지원하고 있다. JPQL, JPA Criteria, QueryDSL, 네이티브 SQL 등등 이 중에서 JPQL과 QueryDSL을 현업에서 많이 사용한다고 한다. 이 외에도 JDBC API를 직접 사용하기도 하고, MyBatis와 SpringJdbcTemplate을 함께 사용하기도 한다. 먼저, JPQL에 대해서 알아보자. ※ JPQL JPQL은 가장 단순한 조회 방법이다. EntityManager.find()를 이용하거나, 객체 그래프 탐색(a.getB().getC()) 와 같은 형식으로 찾기도 한다. JPA를 사용하면 엔티티 객체 중심으로 개발이 가능한데, 문제는 검색쿼리를 사용할 때이다. 여기서 보통 쿼리로 조건을 줄때, WHERE 절을 사용하는데, 조건을 주고싶을 땐 .. 2023. 4. 27. [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. 이전 1 ··· 27 28 29 30 31 32 33 ··· 101 다음 728x90 반응형