개발 공부 기록

개발 공부 기록

  • 분류 전체보기 (190)
    • spring (41)
      • JPA (19)
      • TEST (4)
      • 비동기 처리 (4)
      • SECURITY (1)
      • BATCH (0)
      • WebFlux (0)
    • 문제풀이 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • java (43)
      • java (39)
      • servlet_jsp (3)
      • jdbc (1)
    • 프론트 (7)
      • html (6)
      • css (1)
    • DB (12)
      • Oracle-기초 (8)
      • Mysql-기초 (4)
      • Redis (0)
    • CS (4)
      • Network (4)
      • 디자인 패턴 (0)
    • Project (0)
      • e-commerce (0)
    • Book (66)
      • 이펙티브 자바 (55)
      • 클린코드 (0)
      • 모던 자바 인 액션 (11)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

개발 공부 기록

컨텐츠 검색

태그

스트림 제네릭 디폴트 메서드 Enum 최적화 상속 람다 JPA 가변인수 람다식 단위 테스트 Collector 인터페이스 조인 통합 테스트 배열 메서드 참조 이펙티브 자바 DSL 영속성

최근글

댓글

공지사항

아카이브

JPA(6)

  • 트랜잭션과 락(1)

    트랜잭션과 격리 수준 트랜잭션은 원자성, 일관성, 격리성, 지속성을 보장해야 한다. - 원자성 : 트랜잭션 내에서 실행항 작업들은 하나의 작업처럼 모두 성공하든가 모두 실패해야 한다. - 일관성 : 모든 트랜잭션은 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. - 격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. => 예를 들어 동시에 같은 데이터를 수정하지 못하도록 한다. - 지속성 : 트랜잭션을 성곡적으로 끝내면 그 결과가 기록되어야 한다. 중간에 시스템에 문제가 생겨도 성공한 트랜잭션 내용을 복구해야 한다. 트랜잭션은 원자성, 일관성, 지속성을 보장한다. 하지만 격리성을 완벽하게 보장하려면 트랜잭션을 거의 차례대로 실행해야 한다. 이렇게 하면 동시성 처..

    2024.02.15
  • JPQL(3) - 페이징, 조인

    페이징 JPA는 페이징을 처리하는 API를 제공한다. - setFirstResult(int startPosition) : 조회 시작 위치 - setMaxResults(int maxResult) : 조회할 데이터 수 List resultList = em.createQuery("select m from Member m order by m.age desc", Member.class) .setFirstResult(10) .setMaxResults(20) .getResultList(); 위 예제는 11번째부터 시작해서 20건의 데이터를 조회한다.(11~30) 조인 JPQL도 조인을 지원한다. SQL과 거의 동일하고 문법만 약간 다르다. -내부조인 List resultList = em.createQuery("sel..

    2024.01.25
  • JPQL(2) - 프로젝션

    SELECT 절에 조회할 대상을 지정하는 것을 프로젝션이라 한다. 프로젝션 대상은 다음과 같다. 1. 엔티티 2. 엠비디드 타입 3. 스칼라 타입이(숫자, 문자 등 기본 데이터) 엔티티 프로젝션 SELECT m FROM Member m //회원 SELECT m.team FROM Member m // 팀 위 두 쿼리는 모두 엔티티를 프로젝션 대상으로 사용했다. 객체를 바로 조회한 것인데 컬럼을 하나하나 나열해서 조회해야 하는 SQL과 차이가 있다. 이렇게 조회된 엔티티는 영속성 컨텍스트에서 관리된다. 임베디드 타입 프로젝션 JPQL에서 임베디드 타입은 엔티티와 거의 비슷하게 사용된다. (임베디드 타입은 조회의 시작점이 될 수 없다.) => 테이블이 아니기 때문 아래 코드는 잘못된 예이다. SELECT a ..

    2024.01.24
  • JPA - 프록시

    엔티티를 조회할 때 연관된 엔티티들이 사용되지 않을 때도 있다. @Entity public class Member extends BaseEntity { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; //Getter, Setter } @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneT..

    2024.01.19
  • 영속성 관리(2)

    4. 영속성 컨텍스트의 특징 * 영속성 컨텍스트와 식별자 값 - 영속성 컨텍스트는 엔티티 식별자 값(@Id로 테이블의 기본 키와 매핑한 값)으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. * 영속성 컨텍스트와 데이터베이스 저장 - 영속성 컨텍스트에 엔티티를 저장하면 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영하는데 이것을 플러시라 한다. * 영속성 컨텍스트가 엔티티를 관리하면 장점 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 - 지연 로딩 지금부터 영속성 컨텍스트가 왜 필요하고, 어떤 이점이 있는지 알아보자 4.1 엔티티 조회 영속성 컨텍스트는 내부에 캐시를 가지고 있는데 이것을 1차 캐시라 한다. 영속 ..

    2023.12.28
  • 영속성 관리(1)

    1. 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다(비용이 비쌈) EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); Persistence.createEntityManagerFactory("hello")를 호출하면 META-INF/persistence.xml에 있는 정보를 바탕으로 EntityManagerFactory를 생성한다. 엔티티 매니저 팩토리가 생성된 후 필요할 때마다 엔티티 매니저를 생성하면 된다.(비용이 거의 안 든다) EntityManager entityManager = emf.createEntityMana..

    2023.12.28
이전
1
다음
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바