2024/08/15 6

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

JPA란?

JPA는 Java Persistence API 자바 진영의 ORM 기술 표준이다.여기서 ORM이란 bject-relational mapping(객체 관계 매핑)으로  객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한 후 ORM 프레임워크가 중간에서 매핑을 한다.  EJB는 너무 성능이 떨어지기 때문에 JPA로 사용하게 되었다. 오픈소스에서 출발한 표준이기 때문에 매우 실용적이고 정제되어있다.  구현체로는 대부분 하이버네이트를 사용한다. JPA를 구현한 하이버네이트가 있다.  그렇다면 왜 JPA를 사용하는가?SQL 중심적인 개발 -> 객체 중심 개발생산성 증가유지보수 편이함패러다임 불일치 해결성능 상승데이터접근 추상화표준화의 장점들이 있다.  생산성 상승 하는 이유 : 아래처럼 편..

JPA 2024.08.15