전체 글207 Spring JPA (9) - JPA 값 타입 : 기본값, 임베디드, 값 타입 컬렉션 1. JPA 데이터 타입 분류 기본값 타입 설명 엔티티 타입 @Entity 로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원 엔티티의 키나 나이를 변경해도 식별자로 인식 가능 기본값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고, 값만 있으므로 변경시 추적 불가 --------- 1. 기본값 타입 - int , double - 래퍼 클래스 Integer, Long - String 2. 임베디드 타입 - embedded type, 복합 값 타입 3. 컬렉션 값 타입 - Collection value type 2. 기본값 타입 - 생명 주기를 엔티티에 의존 - 값 타입은 공유하면 XXXXXX => A 라는 회원 이름 변.. Java - SpringJPA 2022. 10. 11. Spring JPA (8) - JPA 프록시와 연관관계 관리, 즉시로딩, 지연로딩, Cascade, 고아 객체 이번 포스팅의 핵심은 지연 로딩!!! 꼭 기억하고 넘어가자 1. Member 를 조회할때 Team 을 함께 조회해야 할까? 아래의 Member 엔티티는 DB 에서 조회 시, team 을 함께 가져오게 된다. 만약 비즈니스상 member 와 team 을 함께 조회해야하는 경우에는 이렇게 함께 가져오는게 잘못된 것이 아니다. 그러나 member 만 조회해와도 충분한 경우, 즉 굳이 team 을 함께 조회하지 않아도 되는 경우에도 team 을 함께 조인해서 가져오는 것은 굉장한 자원 낭비 그 자체! => 이런 문제를 해결하기 위해 사용되는 방식이 JPA 프록시와 지연로딩 기술이다 Member @Entity(name = "teamMember") @Table @Getter @Setter public class M.. Java - SpringJPA 2022. 10. 11. Thymeleaf 공부하기 (2) : 속성 값 설정, 반복, 조건, 주석, 블록, 자바스크립트 인라인, 템플릿 조각, 템플릿 레이아웃 1. 속성 값 설정 타임리프는 주로 HTML 태그에 th:'속성명' 을 지정하는 방식으로 동작한다. th:'속성명' 로 속성을 적용하면 기존 속성을 대체한다. 만약 기존 속성이 없으면 새로 만든다. checkbox 같은 경우 th:checked="true, false" 로 사용한다 속성 설정 속성 추가 - th:attrappend class 속성 뒤에 붙는다 = - th:attrprepend class 속성 앞에 붙는다 = - th:classappend class 속성에 자연스럽게 추가 = checked 처리 - checked o - checked x - checked=false 2. 반복문 타임리프에서 반복은 th:each 를 사용한다. 추가로 반복에서 사용할 수 있는 여러 상태 값을 지원한다. ind.. Front-End/thymeleaf 2022. 10. 11. Thymeleaf 공부하기 (1) : 텍스트, 변수, 기본 객체, 유틸리티 객체와 날짜, url 링크, 리터럴, 연산 본 Thymeleaf 공부하기 시리즈는 김영한 님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의를 듣고 작성한 내용입니다. 들어가면서 몇몇 포스팅에서 계속 이야기해왔지만 나는 정말정말 HTML 에 서툴다. CSS 는 말 할 것도 없고. 다만 어쨌든 내가 만든 프로젝트의 결과물들을 단순한 자바 코드로 보여 줄 수는 없었기에 HTML 을 공부...가 아니라 검색해서 사용해왔다. 다행히도 JSP 와 JSTL 을 배운 경험이 있어서 JSP 로 프론트 페이지를 겨우 구현할 수는 있었다. 사실 jsp 를 쓰면서 굉장히 불편했던 점이 많았다. JSP의 특성상 HTML 파일에 JAVA 코드가 들어갈 때가 많았고, JAVA 코드가 아닌 JSTL 을 사용해서 구현한다고 하더라도 JSTL 과 HTML, CSS 까.. Front-End/thymeleaf 2022. 10. 11. Spring JPA (7) - JPA 고급 매핑 : 상속관계 매핑, @mappedsuperclass 1. 상속 관계 매핑 - 관계형 DB 는 상속 관계 X - 슈퍼 타입, 서브 타입 관계라는 모델링 기법이 객체 상속과 유사 1) 슈퍼 타입, 서브타입의 논리 모델을 실제 물리 모델로 구현하는 방법 : 총 3가지 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 생성 상속 관계 매핑 : 객체의 상속 구조와 DB 의 슈퍼 타입, 서브 타입 관계를 매핑하는 것 2) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) - JOINED : 조인 전략 - SINGLE_TABLE : 단일 테이블 전략 => JPA 기본값 - TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @Discri.. Java - SpringJPA 2022. 10. 4. Spring JPA (6) - JPA 개념 잡기 : 엔티티 연관관계 매핑 1:N, N:1, N:M, 1:1 1. 연관관계 매핑 시 고려사항 3가지 1) 다중성 - 관련 어노테이션 기억!! 다중성 어노테이션 주의사항 N:1 @ManyToOne 1:N @OneToMany 1:1 @OneToOne N:M @ManyToMany 실무에서 거의 사용 X 2) 단방향, 양방향 테이블 - 외래키 하나로 양쪽 조인 가능 => 사실 방향이라는 개념이 없음 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 - 양쪽이 서로 참조하면 양방향 => 얘도 사실 단방향 + 단방향 : 객체 서로서로에 대한 단방향 3) 연관관계의 주인 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 -> 객체 양방향 관계는 A->B , B->A 처럼 참조가 2군데 - 객체 양방향 관계는 참조가 2군데 있음!! 따라서 둘중 .. Java - SpringJPA 2022. 10. 3. Spring JPA (5) - JPA 개념 잡기 : 단방향 연관관계, 양방향 연관관계, 연관관계의 주인 1. 연관관계 매핑의 기초 - 객체와 테이블 연관관계 차이를 이해 - 객체의 참조와 테이블 외래키를 매핑 => 객체 지향적 모델링은 단순히 FK 에 해당하는 변수를 사용하는 것이 아닌 객체의 참조를 FK 로 사용하는것!! - 간단 용어 정리!! 용어 설명 방향 Direction 단방향, 양방향 다중성 Multiplicity 다대일 N:1, 일대다 1:N, 일대일 1:1, 다대다 N:M 연관관계의 주인 Owner 객체 양방향 연관관계 관리 테이블과 객체 사이의 간격!! - 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다 - 객체는 참조를 사용해서 연관된 객체를 찾는다. 예제 시나리오 - 회원과 팀이 존재하며, 회.. Java - SpringJPA 2022. 10. 3. Spring JPA (4) - JPA 개념 잡기 : 객체-테이블 매핑, 필드와 칼럼, 기본키 매핑 1. 객체와 테이블 매핑 1) @Entity - @Entity 가 붙은 클래스는 JPA 가 관리하며 엔티티, 엔티티 클래스 라고 한다. - JPA 를 사용해서 테이블과 매핑 할 클래스는 @Entity 가 필수이다 - 이때 기본 생성자는 필수!!! : 파라미터가 없는 pulbic 또는 protected 생성자가 필요하다 => JPA 에서 사용하는 객체를 프로싱하거나 하는 등등의 기술들이 있는데 이때문에 기본 생성자가 필수라고한다 - final 클래스, enum, interface, inner 클래스 사용X - 저장할 필드에 final 사용 X 핵심 Point!! DB 테이블과 매핑하기 위한 클래스 ( 보통 DTO ) 에 @Entity 어노테이션을 붙인다. 이때 PK 에 해당하는 변수에는 @Id 어노테이션을.. Java - SpringJPA 2022. 10. 2. Spring JPA (3) - JPA 개념 잡기 : 영속성 컨텍스트, 플러시, 준영속 상태 1. 엔티티 매니저 팩토리와 엔티티 매니저 - 고객으로부터 요청이 올때마다 EntityManagerFactor 가 EntityManager 를 생성하고 생성된 EntityManager 이 DB 에 쿼리를 날려서 요청을 처리하게 된다. 2. 영속성 컨텍스트 - JPA 를 이해하는데 가장 중요한 용어로 "엔티티를 영구 저장하는 환경" 이라는 뜻이다. - 영속성 컨텍스트는 논리적인 개념으로 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하게 된다. - 영속성 컨텍스트란 쉽게 이야기해서 EntityManager 안에 생성되는 논리적인 공간? 3. 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 그냥 일반적으로 엔티티 객체만 만들어 둔 후 따로 DB 와 관련된.. Java - SpringJPA 2022. 10. 1. Spring JPA (2) - Entity 객체, JPA 로 DB 연결하기, 기본 문법 사용하기 1. Entity 객체 생성하기 - Entity 객체는 보통 DB 의 정보를 가져와서 저장하는 DTO 객체를 생각하면 편하다 - Entity 객체에는 꼭 @Entity 어노테이션을 붙이고, PrimaryKey 에 해당하는 변수에는 @Id 를 붙여야한다. package com.use.jpabasic.basic; import lombok.*; import javax.persistence.Entity; import javax.persistence.Id; /* * DB 테이블과 매핑하기 위한 클래스 ( 보통 DTO ) 에 @Entity 어노테이션을 붙인다 * 이때 PK 에 해당하는 변수에는 @Id 어노테이션을 붙여야 한다 * * */ @Entity // DB 테이블과 매핑 후 데이터를 가져와 저장하기 위한 클래.. Java - SpringJPA 2022. 9. 29. Spring JPA (1) - JPA 기본 & JPA 프로젝트 생성 Spring JPA 포스팅은 모두 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 정리한 글입니다. 1. JPA 란? Java Persistence API : JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음 2. ORM 이란? Object-relational mapping ⇒ 객체 관계 매핑 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스 대로 설계 ORM 프레임워크가 중간에서 매핑!! ⇒ 대중적인 언어에서는 대부분 ORM 기술이 존재 3. JPA 의 동작 원리 개발자가 직접 DB 에 SQL 을 날리는게 아니라 JPA 가 JDBC API 를 경유해서 DB 에 쿼리문을 날리고 이를 기반으로 결과를 .. Java - SpringJPA 2022. 9. 28. 백준 - 1057 토너먼트 https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 풀이 방법 오랜만에 돌아온 백준 문제 풀이!! 최근에는 알고리즘 잡스 문제를 풀기 때문에 백준 알고리즘 문제 풀이 글이 줄어들었다ㅠㅠ 여튼 이번 문제의 핵심 포인트는 a 와 b 가 같은 라운드에 언제 만나는지 확인하는 것 이다. 따라서 '같은 라운드' 를 확인하는 방법을 알아야한다. 같은 라운드에 있다는 걸 확인하는 방법은 아주 간단하다. (a+1)/2 의 값과 (b+1)/2 의 값이 같은지 여부를 확인.. Java - 알고리즘 2022. 9. 27. 이전 1 2 3 4 5 6 7 ··· 18 다음 728x90 반응형