분류 전체보기33 [42GG] JPA UPDATE 로직 (영속성 컨텍스트, @DynamicUpdate, 벌크 연산) 42GG 프로젝트프로젝트를 진행하면서 엔티티를 업데이트하는 기능을 맡아서 구현하고 있다. 업데이트 관련된 로직에서 JPA는 더티체킹을 통해 엔티티 변경을 감지한다.그리고 보통 엔티티는 setter를 구현하지 않고 명확한 의도를 가진 메서드를 구현한다. 하지만 엔티티에 필드가 많아지게 된다면 setter를 대신하는 메서드를 모든 필드에 대해서 구현해야하는 불편함이 있다. 이를 해결하기 위해서 여러가지 방법을 생각해보다가이번에 승수님과 함께 해당 부분에 대해서 심도 깊은 논의를 진행했다. 먼저 JPA에서 업데이트를 수행하는 로직은 다음과 같이 3가지가 있다. JPA 영속성 컨텍스트와 더티체킹을 사용해서 업데이트한다.@DynamicUdpate를 사용해서 특정 컬럼만 업데이트한다.JdbcTemplate이나 Sp.. 2024. 7. 17. [Spring MVC] @ModelAttribute 데이터 바인딩 문제점스프링을 처음 사용하게 되면 올바르게 요청을 보내도 데이터가 제대로 매핑되지 않아서 null값이 들어오는 경우를 만나게 됩니다. 대부분의 경우에 setter를 추가하게 되면 문제가 해결되지만, 객체지향적인 관점에서 setter는 지양해야하기 때문에 프로젝트에 setter를 작성하지 않는 규칙을 적용하는 경우가 있습니다.또한 기본 생성자 외에 다른 적절한 생성자가 있는 경우에도 데이터 바인딩이 제대로 되지 않는 경우도 있습니다. 여기서는 객체를 생성하고 초기화하는 경우의 수를 3가지로 나눠서 알아보고, 어떻게 작성하는 것이 좋을지 고민해보려고 합니다.@ModelAttribute란?@ModelAttribute를 사용하면 쿼리 파라미터 혹은 HTML Form를 통해 전달되는 파라미터를 객체에 매핑합니다... 2024. 7. 15. [DevOps] 가상머신 (Virtual Machine) 가상머신 물리적 하드웨어(CPU, RAM, 하드디스크 등)를 소프트웨어로 구현한 것이다. 호스트(Host)는 VM(혹은 Hypervisor)가 설치되어있는 실제 컴퓨터 혹은 운영체제를 의미하며,게스트(Guest)는 VM(혹은 Hypervisor)을 통해 실행되는 가상 컴퓨터 혹은 운영체제를 의미한다. 하이퍼바이저(hypervisor)하이퍼바이저는 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼이다.유형 2 하이퍼바이저일반적인 가상머신 환경에서는 하이퍼바이저가 일반 프로그램과 같이 호스트 OS에서 실행되고, 이를 유형 2 하이퍼바이저 혹은 호스트 하이퍼바이저라고 한다.유형 1 하이퍼바이저이와 다르게 유형 1 하이퍼바이저는 호스트 OS를 두지 않고 하드웨어에서 직접 구동되어 게스트 O.. 2024. 6. 7. [Python] 사과게임 이미지에서 숫자 추출하기 사과게임을 하다가 모든 사과를 다 제거할 수 있는 맵이 존재하는지 궁금해서파이썬으로 해당 맵을 체크할 수 있는지 확인하는 프로그램을 작성하려고 한다.개발환경Colab구글 드라이브 연동from google.colab import drivedrive.mount('/content/drive') 개발환경은 간단하게 Colab을 이용했으며, 환경 구성을 위해 구글 드라이브를 연동하고 OpenCV와 Tesseract 등을 추가적으로 설치했다.OpenCV 및 Tesseract 설치!pip install opencv-python!sudo apt install tesseract-ocr!pip install pytesseract OpenCV는 실시간 컴퓨터 비전을 목적으로 하는 오픈소스 라이브러리이다. C/C++ 언어로 .. 2024. 3. 7. [Linux] Flex와 Bison 이 글은 flex & bison 책의 예제코드를 실행하는데 도움이 되기 위해 작성했습니다. Flex와 Bison의 문법에 대한 설명이 없으므로 예제코드를 이해하기 위해서 원문을 먼저 읽어보는 것을 권장드립니다. 이 글의 예제코드는 다음 출처에서 가져왔습니다. Chapter 1. Introducing Flex and Bison Flex Flex는 토큰을 저장해서 알맞는 enum 타입으로 변환하는 어휘 분석(Lexer)을 위한 도구입니다. Bison을 사용하면 헤더파일에 %token으로 등록한 토큰들이 enum으로 자동 생성됩니다. %{ #include "fb1-5.tab.h" %} %% "+" { return ADD; } "-" { return SUB; } "*" { return MUL; } "/" { r.. 2024. 2. 28. [Linux] 쉘 변수와 환경변수 이 글은 shell에서 환경 변수를 참조하는 방법과 env에서 쉘 변수를 어떻게 지정하는지에 대해 다루고 있습니다. env 명령어 minishell 과제에서 built-in 명령어들은 모두 환경변수와 관련된 명령어 입니다. env 명령어는 옵션을 제외하고 다음과 같이 3가지 방식으로 사용할 수 있습니다. 1. 환경변수 목록 출력 # 입력 env # 출력 TERM_SESSION_ID=w0t0p0:4A2AC993-C7C8-4745-9387-F181921C1CC8 SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.bGePyIUzEC/Listeners LC_TERMINAL_VERSION=3.4.23 # ... 2. 하나 이상의 쉘 변수를 포함한 환경변수 목록을 출력 # 입력 env.. 2024. 2. 27. 이전 1 2 3 4 5 6 다음