일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 헥사고날 아키텍처
- spring security
- dataframe
- 포트앤어댑터 아키텍처
- 이펙티브 자바
- DP
- 알고리즘
- 스프링
- 백준
- UML
- 자바
- 파이썬
- 비트마스크
- pandas
- springboot
- 세그먼트 트리
- dfs
- ddd
- 다익스트라
- equals
- disjoint set
- java
- BFS
- docker
- Redis
- 위상정렬
- 데이터 flow
- 문자열
- JPA
- series
- Today
- Total
목록JPA (5)
코딩못하는사람
동시성 문제란? 두 개 이상의 세션이 공통된 자원에 대해서 읽고 쓰는 작업을 할 때 발생할 수 있는 문제이다. 기본적으로 동시성 문제는 완전한 해결이 있는 것이 아닌 타협이 있다. 성능을 포기하고 정확성을 높이느냐, 정확성을 타협하고 성능을 높이느냐이다(ex 트랜잭션 격리 단계) JPA에서도 JPA Transaction의 동시성을 제어하고자 하는 방법이 있다. JPA는 객체를 조회하면 영속성 컨텍스트에 캐시하기 때문에 "일관성 없는 읽기"의 문제는 없다. 주로 해결해야 하는 문제는 "갱신 손실"이다. 갱신 손실을 해결하기 위한 두가지 방법이 있다. Optimistic Lock(낙관적 잠금) 세션1이 데이터를 읽어 왔더라도 다른 세션인 세션2도 해당 데이터에 자유롭게 접근할 수 있다. 하지만 세션2가 Wr..
1.문제점 JPA를 통한 개발을 하다보면 한번쯤 만날 수 밖에없는 에러이다. JPA를 사용하여 DB에 저장된 리소스를 불러와서 반환하는 경우, 혹은 사용할 때 발생했던 에러이다. 2.접근 JPA에 대한 이해가 부족하다 생각하여 JPA강의와 강의자료를 다시 보며 개념을 스터디 했다. JPA의 전반적인 동작 과정 트랜잭션,영속성 컨텍스트,Proxy,Lazy Loading에 대한 이해가 있어야 에러를 이해하고 수정할 수 있다. 3.원인 간단한 예시를 들어서 설명해보겠다. Member와 Message가 연관관계를 맺고 있고 1:N관계를 가지고 있다. Message 엔티티에서는 Member Fetch 전략을 Lazy로 설정해 준 상태이다. 어플리케이션의 메시지 단건 조회 API의 과정은 다음과 같다 그럼 이제 오..
문제점: Review 엔티티에 대해서 테스트 코드를 작성하던중 모두 성공했지만 엔티티 삭제 테스트에서 엔티티를 삭제해도 삭제되지 않는 상황을 마주쳤다. 리뷰 엔티티는 간단하게 다음과 같은 연관관계를 가지고 있다. 접근: JPA 연관관계가 설정이 복잡하다면 삭제 되지 않는다는 기억이 있었다. 김영한 강사님의 Cacade,orphanRemoval 강의를 듣고 개념을 다시 잡았다. 원인: @OneToOne이나 @OneToMany에서 붙혀주는 영속성 전이 Cascade 때문에 일어난 문제였다. 필드에 cascade = CascadeType.ALL을 붙혀주면 그 필드와 연관된 엔티티를 persist 해주지 않아도 persist한 효과가 나면서 영속성이 된다. 하지만 Cascade를 사용하면 편리하긴하지만 주의해야..
Spring Data JPA란? 스프링에서 JPA를 쉽게 사용할 수 있도록 지원해주는 모듈이다. CRUD 쿼리를 짜려면 하나의 도메인마다 반복되는 코드를 JPQL로 짜주어야했다. 하지만 Spring Data JPA를 의존성으로 주입받아 사용하게 된다면 우리가 일반적으로 사용하는 모든 메서드(쿼리)를 직접 작성하지 않아도 인터페이스만 만들어 놓는다면 대신 만들어준다. 인터페이스에서 공통으로 제공되는 메서드의 예시는 count, delete, deleteAll, deleteAll, deleteById, existsById, findById, findAll,save ..등이 있다. Spring Data JPA의 동작과정을 보자. Spring Data JPA가 JpaRepository를 확장한 Repositor..
JPA란? Java Persistence API 의 줄임말로 자바 진영 ORM 기술의 표준이다. ORM 이란? Object-relational mapping(객체 관계 매핑)으로 객체는 객체대로 설계하고 RDB는 RDB로 설계를 한 후 ORM 프레임워크가 중간에서 DB과 객체를 매핑해준다. 객체 지향적으로 설계할 수 있다는 장점이 생긴다. JPA는 java 애플리케이션과 JDBC사이에서 동작한다. 직접 JDBC를 컨트롤하는 것이 아닌 JPA가 JDBC API를 사용해 SQL 을 호출해서 DB와 동작한다. (JPA가 JDBC를 나 대신 sql을 작성해준다) JPA는 인터페이스의 모음이다. 구현체로 하이버네이트, EclipseLink, DataNucleus를 가지고 있고 8~90%가 하이버네이트이다. 왜 J..