# ORM

JPA - 01. introduction
개발을 할 때, 사용자 정보 등의 객체들은 주로 관계형 DB에 넣어서 관리한다. 이를 위해서는 직접 SQL을 작성해 개발을 했어야 하며, 다음과 같은 문제들이 발생할 수 있었다.
MVC, ORM, Sequelize
MVC (Model View Controller) 소프트웨어가 돌아가는 방식에 대한 하나의 패턴, 아이디어, 디자인 코드 가독성, 관리성, 퀄리티가 나아짐. Model: 데이터를 직접 갖고 있거나, 데이터베이스와 연결되어 있어 데이터를 handle함. controll

ORM - 2. Django ORM 실습
이전 글에서 언급했듯 배운 내용을 토대로 내가 진행했던 한 프로젝트의 성능 개선을 했는데, 해당 내용을 커밋하지 않았던 것과 정리하지 않았던 것이 떠올라서 구체적으로 어떤 내용들을 어떻게 개선했는지 정리해보고자 한다.
장고 쿼리셋 캐싱
장고 공식문서에서의 캐싱 설명Caching and QuerySets¶Each QuerySet contains a cache to minimize database access. Understanding how it works will allow you to write t

[자바 ORM 표준 JPA 프로그래밍] 값 타입
값 타입은 복잡한 객체 세상을 단순화하려고 만든 개념이다. 따라서 값 타입은 단순하고 안전하게 다룰 수 있어야 한다.임베디드 타입 같은 값 타입을 여러 엔티티에서 공유하면 위험하다.이러한 "부작용"을 막기 위해서는 값을 복사해서 사용!값(인스턴스)을 복사해서 사용해야
장고 ManyToManyField 정리
장고 model의 ManyToManyField는 유용하긴 하지만 헷갈리는 것들이 많아 정리가 필요하다먼저 왜 foreignkey대신 manytomanyfield를 써야하는지 생각해봐야 한다.영화배우와 영화의 관계나 피자와 토핑의 관계같은걸 연상하면 쉽다. 둘 다 다대다
데브코스 W9D1
데이터베이스 드라이버마다의 구현체 클래스의 인터페이스를 사용해 다양한 종류의 데이터베이스에 접근할 수 있고 JdbcTemplate api의 sql문을 수행한 결과문인 resultSet을 도메인 객체로 변환해서 사용한다.Jdbc template의 경우 쿼리의 결과로 나온
자바 ORM 표준 JPA 프로그래밍
자바 ORM 표준 JPA 프로그래밍 http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788960777330 JPA 란 애플리케이션의 데이터를 객체지향 관점으로 바라보
장고 models 정리
사진에 나온 코드는 고양이라는 데이터를 정의한 것이다name, weight_g 와 같은 것을 모델의 fields라고 한다 각 필드는 각자의 속성을 가지며 DB의 컬럼이 되는 것이다. 위 코드를 마이그레이션하면 장고에 연결된 DBMS에 SQL을 통해 cat 테이블이 생성
ORM cookbook 5
일반적인 집계 기능을 수행하는 Max, Min, Avg, Sum정렬 기준을 무작위로 설정하기결국 정렬을 해야하므로 다른 방법에 비해 비용이 들 수 있다.필드값이 연속적인 경우 최소값과 최댓값 사이의 난수를 생성하기중간에 삭제된 항목이 많은 경우 여러번 루프를 돌며 체크
ORM cookbook 4
동일한 값을 가진 column을 기준으로 두 표를 결합할 수 있다.select_related는 정방향 참조 모델에 대해서 Join한다.ORM은 똑똑해서 select_related를 포함하지 않더라도 필요에 따라 알아서 JOIN해주는 경우가 있다.정방향 참조 모델의 필드
ORM cookbook 3
User와 1대1로 연결된 UserParent 모델에서, UserParent이면서 User인 object를 조회하는 쿼리OuterRef를 이용하면 서브쿼리가 외부 쿼리의 정보를 참조할 수 있다.https://docs.djangoproject.com/en/4.0
ORM cookbook 2
앞으로 실행할 명령들은 jupyter에서 async error가 발생한다.https://stackoverflow.com/questions/61926359/django-synchronousonlyoperation-you-cannot-call-this-from-a
ORM cookbook 1
django ORM cookbook part1 주피터 노트북으로 ORM cookbook을 따라서 연습한 내용이다. https://opheliesaysone.tistory.com/16 를 참고해서 주피터 노트북을 설정했고 내용, 실행한 코드, 실행결과를 마크다운으로

[자바 ORM 표준 JPA 프로그래밍] 복합 키와 식별 관계 매핑
이 장은 복합 키를 매핑하는 방법과 식별 관계, 비식별 관계를 매핑하는 방법에 대해 알아본다.식별관계 : 부모 테이블의 기본 키를 내려받아서 자식 테이블의 기본 키 + 외래 키로 사용하는 관계업로드중..비식별 관계 : 부모 테이블의 기본 키를 받아서 자식 테이블의 외래
Django ORM 쿼리 최적화
장고는 특정 시기에만 쿼리를 날린다. 그 시기를 알아야 최적화가 가능하다. Django ORM의 특징 Lazy Loading: 지연 호출 Eager Loading: 즉시 로딩(N+1 Problem) N+1 문제 for문을 돌때, 조회할 때마다 sql이 계속 호출되는