본문 바로가기

backend12

[JPA] 동일 트랜잭션 내 OneToMany 필드 객체의 데이터와 DB 데이터의 불일치 JPA의 변경감지 jpa에서 데이터를 수정하는 방식으로는 영속상태의 엔티티 필드를 수정하는 방식인 변경감지가 있다. 변경감지가 일어난 이후, 트랜잭션 종료 또는 JPQL 실행을 하면 영속성 컨텍스트를 flush하게 되어있다. 테스트를 하다 마주친 양방향 연관관계 매핑 과정에서 생긴 궁금증과 테스트를 통해 궁금증을 해결한 과정을 적어보고자 한다. 양방향 연관관계 매핑 우선 설명에 필요한 두 엔티티에 대해 간략하게 적어보자면 아래와 같다. 1. Member: Member 엔티티는 List 타입의 필드를 가진다. (@OneToMany(mappedBy)) 2. Solve: Solve 엔티티는 Member 타입의 필드를 가진다. (@ManyToOne) 이 두 관계는 양방향 연관관계로써, Member엔티티의 L.. 2023. 4. 21.
[spring] @Configuration의 프록시 객체 수동 빈 등록이 싱글톤 보장될 수 있는 이유 사실, 스프링에서 @Bean 애노테이션을 사용하여 수동 등록을 해도 싱글톤으로 등록된다. 하지만, 문제는 내부의 의존관계를 메서드 호출을 통해서 주입해주는 경우 발생하게 된다. 이러한 경우에는 객체가 새로 생성되기 때문에 DI컨테이너 내에 싱글톤이 깨지게 된다. 이 문제를 해결해주기 위한 애노테이션이 바로 @Configuration인 것이다. @Bean을 사용하여 수동으로 빈을 등록할 때, @Configuration을 적어줌으로써 싱글톤이 유지되게 된다. @Configuration의 유무에 따른 싱글톤 보장 여부 예제코드와 함께 직관적으로 살펴보면 아래와 같다. - ItemService와 ItemRepository 클래스. public class ItemRep.. 2023. 3. 10.
[Linux] 우분투 파티션 나누는 법 / 마운트 우분투 파티션 관리 fdisk fdisk라는 명령어를 통해 파티션 생성, 삭제, 타입 결정 등이 가능하다. 우선, fdisk -l 명령어를 통해 현재 디스의 파티션 현황을 확인할 수 있다. 위 그림처럼 현재 2개의 파티션으로 나뉘어진 것이다. Boot에 표시된 파티션은 부팅할 때 사용하는 파티션이다. 현재, sda2에 1T 할당한 것이다. 나는 2T의 디스크가 존재하기 때문에 1T의 주파티션을 하나 더 생성할 것이다. 우선 현재 장치들은 모두 /dev/sda 이라서, fdisk를 통해 해당 장치에 접근해야 한다. fdisk /dev/sda 라는 명령어를 입력하면 command라는 입력 창이 나온다. m을 입력하면 명령할 수 있는 키워드들이 나온다. 여기서 n을 입력하여 파티션을 생성할 수 있다. 위 이미.. 2022. 11. 4.
REST API REST : Representational State Transfer의 약자이다. REST API는 URI를 통해서 자원을 나타낸다. HTTP Method를 이용하여 자원의 행위를 규정한다. HTTP Method는 GET, POST, PUT, DELETE가 대표적이다. GET: 조회 POST: 등록 PUT: 수정 DELETE: 삭제 여기서 말하는 자원이란? RESTful한 URI에서 가르키는 자원은 객체를 뜻하는 것이다. 해당 자원(resource)은 네 가지로 나눌 수 있다. 리소스가 아래 네 가지중 어느 범주에 해당되는 지 확인하고, 그에 맞는 URI를 생성해 나가야 한다. Document Document는 1개의 개체를 나타내는 것이며, 인스턴스와 유사한 개념이다. - 단수형 표현 REST에서는 리.. 2022. 9. 2.