전체 글 206

백준 1158 - Java

문제 내 풀이 N개의 원형에서 K번째가 죽게되는데 죽은 위치에서 계속 3번째인 사람이 죽는 것을 기록하여 그 순서를 출력하는 문제이다. import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Josephus { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); //N 입력 받기 int K = sc.nextInt(); //K 입력 받기 if (N people = new ArrayList();//N번까지 사람 리스트에 입력. ..

백준 2024.08.24

JPA 상속관계 맵핑

• 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법    • 각각 테이블로 변환 -> 조인 전략    • 통합 테이블로 변환 -> 단일 테이블 전략    • 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략  조인 전략 장점 테이블 정규화 외래 키 참조 무결성 제약조건 활용가능 저장공간 효율화 단점 조회시 조인을 많이 사용, 성능 저하 조회 쿼리가 복잡함 데이터 저장시 INSERT SQL 2번 호출  단일 테이블 전략장점조인이 필요 없으므로 일반적으로 조회 성능이 빠름조회 쿼리가 단순함단점자식 엔티티가 매핑한 컬럼은 모두 null 허용단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있다. 상 황에 따라서 조회 성능이 오히려 느려질 수 있다.   구현 클래스마다 테이블 전략이 전..

JPA 2024.08.22

JPA 연관관계 매핑

다대일 [N:1]일대다 [1:N]일대일 [1:1]다대다 [N:M] 연관관계 매핑 시 고려사항 3가지 다중성단방향, 양방향연관관계의 주인 다중성다대일: @ManyToOne -> 가장 많이 쓴다.일대다: @OneToMany일대일: @OneToOne다대다: @ManyToMany -> 실무에서 사용하면 안 된다!대칭성이 있다고 생각하면 생각하기 편하다. 단방향, 양방향테이블외래 키 하나로 양쪽 조인 가능사실 방향이라는 개념이 없음 객체참조용 필드가 있는 쪽으로만 참조 가능한쪽만 참조하면 단방향양쪽이 서로 참조하면 양방향 ->이해하기 쉽게 표현한 것이지 방향은 하나다.연관관계의 주인 • 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음• 객체 양방향 관계는 A->B, B->A처럼 참조가 2군데• 객체 양방향 ..

JPA 2024.08.22

JPA 연관관계

방향(Direction): 단방향, 양방향다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해연관관계의 주인(Owner).. 어려운 내용: 객체 양방향 연관관계는 관리 주인이 필요 JPA계의 포인터 import jakarta.persistence.*;@Entity@TableGenerator( name = "MEMBER_SEQ_GENERATOR", table = "MY_SEQUENCES", pkColumnValue = "MEMBER_SEQ", allocationSize = 1)public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQU..

JPA 2024.08.21

JPA 엔티티 매핑

객체와 테이블 매핑: @Entity, @Table  필드와 컬럼 매핑: @Column기본 키 매핑: @Id연관관계 매핑: @ManyToOne ,@JoinColumn1. @EntityJPA가 관리를 한다. JPA를 사용하여 테이블과 매핑할 클래스는 필수로 적어주어야한다.기본 생성자가 필수 (파라미터가 없는 것) 이고 final 클래스, enum, interface, innter 클래스 사용 X저장할 필드에 final 사용 X2. @Table 3. @ Column   insertable,updatable : insert , update 할 것이냐 말 것이냐. 기본값은 TRUE , FALSE로 하면 변경되지 않는다.nullable (중요) : false로 하면 not null 제약조건이 붙는다.        ..

JPA 2024.08.15

백준 10845 - java

문제풀이처음에는 Que로 제목과 같이 Que를 사용하여 문제를 풀었다. 하지만 LinkedList로는 런타임 오류가 떳고 그에 따라 Deque를 사용하여 ArrayDeque를 사용하여 문제를 풀었다. 첫 번째 코드는 Que로 풀었던 코드이고 두 번째 코드는 Deque를 사용하여 풀었던 풀이이다. 첫번째 Que를 사용한 실패한 풀이: import java.util.*;public class Que1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Queue queue = new LinkedList(); int n = sc.nextInt(); for (int ..

백준 2024.08.15

JPA 플러시

플러시란?영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는것변경 감지수정된 엔티티 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법em.flush() - 직접 호출  -> 테스트할때만 거의 사용함 쓰기지연 SQL 저장소에 있는 데이터가 데이터베이스에 반영됨트랜잭션 커밋 - 플러시 자동 호출JPQL 쿼리 실행 - 플러시 자동 호출 Member member = new Member(200L, "member200"); em.persist(member); em.flush(); //다 즉시 일어난다.  (플러시를 하더라도 1차 CASH는 유지가 된다. 쓰기 ..

JPA 2024.08.15

JPA 영속성

JPA에서 가장 중요한 2가지객체와 관계형 데이터베이스 매핑하기영속성 컨텍스트 ( 실제 어떻게 돌아가는지에 관련)     이점을 얻을 수는 있으나 크게 도움이 되지는 않는다. member 1과 2를 둘 다 조회해도 쿼리가 한 번만 선언이 된다.member 1과 member 2를 ==동일성으로 해도 true가 된다. 동일성을 보장을 해준다. => 1차 Cash가 있기에 가능하다. 내부적으로의 상황tx.commit(); //이것을 한 시점에 데이터베이스 쿼리에 등록   변경할 시에.. 스냅샷은 값을 읽어온 그 시점을 스냅샷으로 설정을 하는 것이다.  Entity 삭제는em.remove(이름); 하면 된다

JPA 2024.08.15