반응형

spring 22

객체지향 쿼리 언어2 - 중급 문법

JPQL - 경로 표현식경로 표현식 : .(점)을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다.ex)select m.username -> 상태 필드(엔티티 안에서 값을 바로 찍음)  from Member m    join m.team t      -> 단일 값 연관 필드(엔티티에서 엔티티를 찍음)    join m.orders o   -> 컬렉션 값 연관 필드(엔티티에서 컬렉션을 찍음)where t.name = '팀A' 상태 필드(state field) : 단순히 값을 저장하기 위한 필드연관 필드(association field) : 연관관계를 위한 필드  - 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티  - 컬렉션 값 연관 필드 : @OneToMany, @..

공부/JPA 2025.01.03

객체지향 쿼리 언어1 - 기본 문법

JPA는 다양한 쿼리 방법을 지원한다.- JPQL- JPA Criteria- QueryDSL- 네이티브 SQL- JDBC API 직접 사용, MyBatis, SpringJdbcTemplate JPQL- 가장 단순한 조회 방법이다.  - EntityManager.find()  - 객체 그래프 탐색(a.getB().getC()) 만약 나이가 18살 이상인 회원을 모두 검색하고 싶다면 어떻게 해야 할까?JPA를 사용하면 엔티티 객체를 중심으로 개발하게 되는데 문제는 검색 쿼리이다.검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 한다.모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 하다.애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다. JPQL..

공부/JPA 2024.12.30

값 타입

JPA는 데이터 타입을 최상위 레벨로 분류하면 2가지로 분류한다. 1. 엔티티 타입  - @Entity로 정의하는 객체  - 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원의 키나 값을 변경해도 식별자로 인식 가능2. 값 타입  - int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체  - 식별자가 없고, 값만 있으므로 변경시 추적 불가  - 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체  값 타입은 또 세가지로 분류될 수 있다.1. 기본값 타입2. 임베디드 타입3. 컬렉션 값 타입 값 타입1. 기본값 타입  - 자바 기본 타입(int, double)  - 래퍼 클래스(Integer, Long)  - String 기본 값 타입은 String ..

공부/JPA 2024.12.23

프록시와 연관관계 정리

프록시프록시는 왜 사용할까? 아래의 그림을 보자.Member를 조회할때 Team도 함께 조회가 필수인가?아래의 코드를 보자.Member member = em.find(Member.class, 1L);printMemberAndTeam(member);private static void printMemberAndTeam(Member member) { String name = member.getName(); System.out.println("name = " + name); Team team = member.getTeam(); System.out.println("team = " + team);} em.find하여 쿼리가 나갈때 team과 member 쿼리가 두 방이 나가서 한번에 찾을 수 ..

공부/JPA 2024.12.21

다양한 연관관계 매핑

연관관계 매핑시 고려사항 3가지- 다중성    - 다대일 : @ManyToOne    - 일대다 : @OneToMany    - 일대일 : @OneToOne    - 다대다 : @ManyToMany- 단방향, 양방향    - 테이블(단방향) : 외래 키 하나로 양쪽 조인이 가능하다 즉 방향이라는 개념 자체가 없다.    - 객체(양방향) : 객체는 참조용 필드가 있는 쪽으로만 참조가 가능하다. 한쪽만 참조하면 단방향이고, 양쪽이 참조하면                                 양방향이다.- 연관관계의 주인    - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다.    - 객체 양방향 관계는 A->B, B->A처럼 참조가 2군데이다.    - 객체 양방향 관계는 참조가 2군데 있..

공부/JPA 2024.12.03

연관관계 매핑 기초

https://surrealcode.tistory.com/103 엔티티 매핑엔티티 매핑엔 다음과 같은 어노테이션이 사용된다.객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn  객체와 테이블 매핑@Entity- @Ensurrealcode.tistory.com앞서서 왜 테이블 설계와 개발 후 왜 연관관계가 필요한지에 알아봤다.참고하도록 하자. 목표- 객체와 테이블 연관관계의 차이를 이해- 객체의 참조와 테이블의 외래 키를 매핑- 용어 이해  - 방향(Direction) : 단방향, 양방향  - 다중성(Multiplicity) : 다대일, 일대다, 일대일, 다대다 이해  - 연관관계 주인(Ow..

공부/JPA 2024.12.02

엔티티 매핑

엔티티 매핑엔 다음과 같은 어노테이션이 사용된다.객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn  객체와 테이블 매핑@Entity- @Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라 한다.- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다.- 주의  - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)  - final 클래스, enum, interface, inner 클래스는 사용할 수 없다.  - 저장할 필드에 final은 사용할 수 없다.속성 : name  - JPA에서 사용할 엔티티 이름을 지정한다.  - 기본값 : 클래스 ..

공부/JPA 2024.11.30

웹 계층 개발

https://surrealcode.tistory.com/98 애플리케이션 구현(도메인 개발)구현 전 앞서 만든 예제를 통해 도메인 분석과 설계를 하여 구현 준비를 한다https://surrealcode.tistory.com/97 도메인 분석 설계JPA 프로그래밍의 이론을 알기 전 실전 코딩을 통해 직접 코드를 만들어surrealcode.tistory.com애플리케이션까지 구현이 마무리 되었다면, 웹 계층을 개발하도록 한다.Controller 관련과 front 관련 개발이다.thymeleaf를 사용할 예정이다. 개발 순서는 다음과 같이 진행한다.홈 화면과 레이아웃 -> 회원 등록 -> 회원 목록 조회 -> 상품 등록 -> 상품 목록 -> 상품 수정 -> 변경 감지와 병합(merge) -> 상품 주문 ->..

카테고리 없음 2024.11.25

애플리케이션 구현(도메인 개발)

구현 전 앞서 만든 예제를 통해 도메인 분석과 설계를 하여 구현 준비를 한다https://surrealcode.tistory.com/97 도메인 분석 설계JPA 프로그래밍의 이론을 알기 전 실전 코딩을 통해 직접 코드를 만들어보고, 기본 학습을 다시 다루어 볼 예정이다. 목차는 다음과 같다. 목차1. 요구사항 분석2. 도메인 모델과 테이블 설계3. 엔surrealcode.tistory.com 만들어볼 UI는 다음과 같다.º 회원 기능  - 회원 등록  - 회원 조회º 상품 기능  - 상품 등록  - 상품 수정  - 상품 조회º 주문 기능  - 상품 주문  - 주문 내역 조회  - 주문 취소 ---예제를 단순화 하기 위해 다음 기능은 구현하지 않았다.---1. 로그인과 권한 관리2. 파라미터 검증과 예외 ..

공부/JPA 2024.11.21

빈 스코프

빈 스코프란?지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다.싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고, 더는 관리하지 않는 매우 짧은                         범위의 스코프이다웹 관련 스코프 -request : 웹 요청이 들어오고 나갈때까지 유지되는 스코프                          sessi..

공부/Spring 2024.11.08
반응형