본문 바로가기

분류 전체보기

(16)
1차 캐시, 영속성 컨텍스트는 어디에 있나? JPA의 구현체 중 하나인 하이버네이트(Hibernate)를 기준으로 설명한다. 하이버네이트에는 영속성 컨텍스트(PersistenceContext) 인터페이스가 존재한다. 이 인터페이스의 구현체를 찾아보면 StatefulPersistenceContext 라는 클래스가 존재한다. 이게 우리가 찾는 영속성 컨텍스트다. 1차 캐시로도 불려진다. StatefulPersistenceContext에는 엔터티를 관리하기 위한 수많은 컬렉션들이 존재한다. Id 생성 전략이 IDENTITY인 엔티티를 persist()하면, 해시맵인 entitiesByKey에 저장된다.
하이버네이트 6에서 사용자 정의 함수 추가하기 (Adding user defined function in Hibernate 6) 하이버네이트 5에서 사용자 정의 함수를 추가하는 방법이 하이버네이트 6에서는 다소 많이 바뀌었습니다. 하이버네이트를 단독으로 사용하는 환경에서는 사용자 정의 함수를 작성하고 이를 Persistence.xml에 추가하면 됩니다. 스프링부트를 기반으로 하이버네이트를 사용한다면 사용자 정의 함수를 작성하는 것은 동일하나 작성된 사용자 정의 함수를 Persistence.xml이 아닌 application.properties에 추가하면 됩니다. 1. 사용자 정의 함수 작성 Hibernate 5 Hibernate 6 2. Persistence.xml에 사용자 정의 함수 추가 Hibernate 5 Hibernate 6 3. (Spring Boot Project) application.properties에 사용자 정의..
CAFE 24 FTP 접속하는 방법 무작정 따라하기 시리즈 (컴퓨터와 친하지 않으신 분들을 위한 글) 1. CAFE24에 로그인 합니다. 2. 로그인 한뒤 메뉴 중 "나의 서비스관리"를 선택합니다. 3. 왼쪽 메뉴 아래쪽에 "서비스 접속정보"를 선택합니다. 4. FTP 접속에 사용될 FTP/SSH 주소, FTP/SSH 아이디를 잘 기억합니다. * 타업체에서 업무를 위해 FTP정보를 요구할시 아래 화면에 나타난 정보를 전달하시면 됩니다. 비밀번호는 해당 사이트 생성할 당시 신청했던 "관리자 비밀번호"를 전달하시면 됩니다. 5. 왼쪽 메뉴 아래쪽에 "웹FTP"를 선택합니다. 그리고 FTP 프로그램 다운로드 중 "FileZilla 프로그램 다운로드"를 선택합니다. 다운로드된 프로그램을 설치합니다. 6. 설치된 "FileZilla" 프로그램을 실..
[DB] Character Set, Collate이란 무엇인가? Mysql에서 DB를 생성할 때 Character Set과 Collation을 지정할 때가 있다. CREATE DATABASE hardlearner CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; Character Set은 무엇인가? 문자들과 그 문자들을 코드화한 인코딩들의 조합이다. mysql 공식문서는 character set을 다음과 같이 설명하고 있다. https://dev.mysql.com/doc/refman/8.0/en/charset-general.html A character set is a set of symbols and encodings. Suppose that we have an alphabet with four letters: A, B, a,..
세션(session)이란 무엇인가? What is Session? HTTP(HyperText Transfer Protocol 이하 HTTP)를 통해 Client와 Server간 통신하는 맥락에서 session의 의미는 상태를 가지지 않는 HTTP로 통신할 때 클라이언트로부터 서버에 전달된 요청이 동일한 사용자의 요청임을 서버에서 식별하기 위한 기술이다. Why use Session? HTTP의 특징은 상태를 가지지 않는다. 상태를 가지지 않는 다는 것은 앞의 요청과 뒤의 요청이 어떤 연결고리도 가지지 않는 것이다. 따라서 상태를 가지 않는 사용자A의 여러 요청을 서버는 동일한 사용자A로부터 요청된 것임을 알 수 없다. 동일한 사용자가 보낸 요청임을 알기 위해 session을 사용한다. How Session works? 일반적으로 백엔드 개..
CQS(Command-Query Separation) CQS는 Bertrand Meyer에 의해 제안되었다 CQS의 목적은 커맨드와 쿼리를 분리하는 것이다 command(명령)은 결과를 반환하지 않는다. 시스템의 상태를 변경한다 command라는 용어대신 컨텍스트에 따라 modifier, mutator라고 부를 수 있다 query(질의)는 결과를 반환한다. 시스템의 관찰 가능한 상태를 변경하지 않는다(사이드 이펙트가 없다) 사이드 이펙트의 정의는 맥락마다 다르지만 여기서 쓰인 의미는 내부에 변경이 일어나는지 아닌지를 말하는 것이다. 즉, 내부에 변경이 발생하지 않으면 사이드 이펙트가 없는 것이다. 예외사항 CQS의 예외사항으로 좋은 사례는 stack의 pop이다 stack의 pop은 가장 최근에 push된 값을 반환하고 stack에서는 제거하는 명령이다 p..
AWS EC2 INSTANCE SCHEDULER로 INSTANCE 자동으로 켜고 끄기 AWS EC2 INSTANCE SCHEDULER로 INSTANCE 자동으로 켜고 끄기 소속된 개발팀에서 데스크탑을 개발서버(DB포함)로 사용하고 있었다. 해당 장비들 대부분 노후화되었고 일부는 인터넷 연결이 간헐적으로 끊켜 재부팅을 해줘야 다시 연결되는 상황이었다. 우여곡절이 있었지만 AWS의 EC2를 개발서버로 도입하자고 제안드렸고 승인이 떨어졌다. 모든 것을 혼자서 구축해야하지만 방대하면서도 자세한 AWS의 매뉴얼, 구글링 그리고 나보다 먼저 삽질하신 분들의 글을 믿고 진행했다. EC2를 사용하여 개발서버를 구축하고자 제안할 수 있었던 이유는 다음과 같은 경험이 있었기 때문이다. 코드스쿼드 백엔드 과정 중 학생들은 스프링부트를 사용하여 만든 웹 애플리케이션을 배포할 외부 서버가 필요했다. 1인당 1대..
URL의 구조 URL (Uniform Resource Locator) 넓은 의미에서의 URL은 애플리케이션이 리소스에 접근할 수 있는 방법이다. (HTTP 완벽가이드에서 발췌) 우리가 자주 쓰는 인터넷 브라우저의 관점에서는 서버에 자원을 요청하는 방법이다. 위키에서는 URL을 "네트워크 상에서 자원이 어디있는지 알려주기 위한 규약"이라고 말하는데, 네트워크나 서버에 대해 공부를 한적이 없다면 한 번에 와닿는 표현은 아닌 것 같다. URL scheme://:@:/;파라미터?# URL 구성요소는 우리가 아는 것과는 달리 많이 복잡하다. 우리가 아는 URL은 https://www.myhome.com/index.html, https://www.question.com/search?question=what 와 같은 형태이다. 포..