[JPA] 변경 감지와 병합(Merge)
2023. 4. 22. 22:27
데이터베이스/JPA
준영속 엔티티를 수정하는 2가지 방법 ⭐️준영속 엔티티란? JPA에서 영속성 컨텍스트에서 분리된 엔티티 즉, 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 영속성 컨텍스트는 JPA가 엔티티를 관리하는 곳으로, 영속 상태(Persistent)인 엔티티는 영속성 컨텍스트에 저장되어 관리된다. 영속 상태인 엔티티가 영속성 컨텍스트에서 분리되면 준영속 상태(Detached)가 된다. 준영속 상태의 엔티티는 더 이상 영속성 컨텍스트에서 관리되지 않으며, 영속성 컨텍스트에서 분리된 이후에는 엔티티를 수정하더라도 JPA는 이를 인식하지 못한다. 준영속 엔티티를 수정하는 방법은 변경 감지 및 병합 사용하는 방법이 있다. 변경 감지 영속성 컨텍스트에서 엔티티를 다시 조회한 후에 데이터를 수정하는 방법으로 트랜잭..
[SQL] CROSS JOIN 이란? 그리고 JPA에서 주의할 점
2023. 2. 18. 21:53
데이터베이스/SQL
1. CROSS JOIN 이란? 크로스 조인은 모든 경우의 수를 전부 표현해주는 방식이다. 기준 테이블이 A일 경우 A의 데이터 한 ROW를 B테이블 전체와 JOIN 하는 방식이며, 결과가 N * M 이 된다. A테이블에 데이터가 3개, B테이블에는 데이터가 4개가 있으므로 총 12개가 검색된다. CROSS JOIN은 대개 테스트로 사용할 대용량의 테이블을 생성할 경우에 사용된다고 한다. 예를 들어, 각 5 만건과 7 만건의 테이블을 CROSS JOIN 하면 35억건의 데이터를 생성시킬 수 있다. 이 경우 두 테이블 컬럼들의 총 크기와 생성될 총 행수에 따라, 시스템이 다운되거나 디스크 용량이 꽉 차 버릴 수도 있으니 주의가 필요하다. 2. JPA에서 주의할 점 팀장님께서 말씀하신게 바로 이 부분인데, ..
[SQL] 정규화란?
2023. 2. 5. 19:03
데이터베이스/SQL
어느날 팀장님께서 이렇게 물었다 정규화가 뭔지 아세요? 머쓱하게 잘 모른다고 말씀드렸다. 다음에 같은 걸 물어보시면 대답해드리기 위해 공부한다. SQL 정규화란? 정규화는 1NF ~ 6NF 그리고 BCNF 가 있다. 하지만 보통, 3NF 정규화까지만 해도 충분하다고한다. 설명 데이터를 중복으로 저장하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킨다. 정규화는 중복 데이터를 저장하면서 일으키는 문제점을 없애려고 정보를 주제별로 분할하는 프로그램을 의미한다. 즉, 정규화란 데이터가 꼬이는 것을 막기위해 테이블을 잘게 나누는 것 행위다. 기본 목표 테이블 간에 중복된 데이터를 허용하지 않는다는 것, 중복된 데이터를 허용하지 않음으로써 무결성(Integrit..
[mssql] ROW_NUMBER() OVER () , PARTITION BY
2022. 12. 24. 21:52
데이터베이스/mssql
ROW_NUMBER 함수란? - 각 PARTITION 내에서 ORDER BY절에 의해 정렬된 순서를 기준으로 고유한 값을 반환하는 함수입니다. - 윈도우 함수(Window Funtion)로 그룹 내 순위 함수입니다. 문법 ROW_NUMBER() OVER(PARTITION BY [그룹핑할 컬럼] ORDER BY [정렬할 컬럼]) - PARTITION BY는 선택, ORDER BY는 필수 공부하게 된 계기 구조 이번 프로젝트에서 point 라는 도메인에 유저들이 포인트가 지급되면 하나씩 쌓이는 구조이며, totalPoint에 최근에 적립된 totalPoint에서 더해져 DB에 적재가 되는 구조입니다. @Getter @Setter @Entity public class Point extends DateTime ..