본문 바로가기

개발42

영속성 컨텍스트 (Persistence Context) 0. 영속성 컨텍스트란? Entity를 영구히 저장하는 환경이라고 해석해 볼 수 있습니다. Entity Manager를 이용해 저장하거나 조회하면 Entity Manager는 영속성 컨텍스트에 해당 Entity를 보관 및 관리합니다. 1. 특징 1-1. 영속성 컨텍스트가 관리하는 Entity는 반드시 식별자가 존재해야 한다. 영속성 컨텍스트는 Entity를 식별자 값(@id로 테이블의 기본키와 맵핑한 값)으로 구분하기 때문에 반드시 존재해야 합니다. 만약 객체에 식별자가 없을 경우 Exception이 발생합니다. 1-2. 1차 캐시 영속성 컨텍스트 내부에는 캐시가 존재합니다. 이를 1차 캐시라고 부르며, 영속 상태의 Entity를 이곳에 저장합니다. 이 1차 캐시는 Key-Value 형태로 저장되며 Ke.. 2024. 2. 10.
Entity의 생명주기 (Entity LifeCycle) JPA에서 Entity는 4가지의 생명주기를 가집니다. 비영속 (New / Transient) Entity를 생성하고 아직 저장하지 않은 상태입니다. 따라서, 영속성 컨텍스트 혹은 데이터베이스와는 전혀 연관이 없는 상태입니다. Member member1 = new Member(); member1.setId(1); member1.setUserName("회원1"); 영속 (Managed) Entity Manager를 통해 Entity를 영속성 컨텍스트에 저장한 상태 혹은 저장된 Entity를 조회한 상태입니다. 영속성 컨텍스트가 관리하는 Entity를 이 영속 상태라고 합니다. Member member2 = new Member(); member2.setId(2); member2.setUserName("회원2.. 2024. 2. 9.
플러터 웹뷰에서 물리 키보드 방향키가 동작하지 않는다. 메인 컴포넌트가 웹뷰로 구성된 페이지에서 물리 키보드의 방향키가 동작하지 않는다는 문의를 받았습니다. 재현해보니 정말 동작하질 않았습니다. 아이패드같은 태블릿으로 앱을 사용할 때 키보드를 쓰는 사용자는 충분히 불편하겠다 싶어 분석결과, 아래와 같이 조치했습니다. 물론 플러터 엔진의 문제로 보여 임시 조치이며, webview_flutter와 flutter_inappwebview 공통적으로 발생하는 문제입니다. 문제가 발생하는 코드 당연히 일반적인 구현입니다. @override Widget build(BuildContext context) { return Scaffold( child: SafeArea( child: InAppWebView( ... .. . ), ), ); } 조치한 코드 WebView 위젯(.. 2024. 2. 6.
Dockerfile에 환경변수를 추가해보자. 📌 지난 글 1. Dockerfile을 이용해 Docker image 생성해보자. 지난 글에서는 임의의 애플리케이션을 Dockerfile을 통해 Docker Image를 생성하는 것을 알아봤습니다. 하지만 운영할 땐 단순히 Application을 띄우는 것이 아니라 여러 가지 환경변수 등을 주입해줘야 합니다. 예를 들어, 개발환경이냐 운영환경이냐에 대한 spring profiles가 그 대표적인 예일 것입니다. 이에, 우리는 이번 게시글을 통해 Dockerfile에 환경 변수를 주입하는 법을 확인하고자 합니다. 1. 지난 글에서 생성한 Dockerfile 아래의 Dockerfile은 1. Amazon Corretto JDK 17을 가지고 있는 경량화 리눅스(Alpine)에 2. 빌드된 spring boo.. 2023. 12. 17.
플러터에서 CocoaPods 라이브러리 최신화하기 플러터로 개발을 하다보면 firebase와 같은 패키지가 업데이트가 자주 됩니다. 이럴 땐 CocoaPods 라이브러리를 최신화해줘야합니다. 1. CocoaPods 삭제하기 # ios 디렉토리로 이동 후 Podfile.lock 삭제 cd {projectRootDir}/ios rm -f Podfile.lock # CocoaPods 의존성 삭제하기 pod deintegrate # CocoaPods 캐시 삭제하기 pod cache clean --all 2. CocoaPods 설치하기 pod install 명령어를 입력하면, 아래와 같이 라이브러리가 다시 설치되는 것을 볼 수 있습니다. # CocoaPods 라이브러리 설치 # --repo-update 옵션은 pod install 전에 pod repo updat.. 2023. 12. 13.
su: Authentication failure 문제점 [common-user@master ~]$ su - Password: su: Authentication failure 일반 사용자에서 su 명령어를 이용해 root 권한을 획득하려 했다. 1. 비밀번호는 설정되어있었고, 2. 정확하게 입력했는데도 권한을 획득하지 못했다. 원인 파악 어쨋든 sudo 명령어를 수행할 수 있는 사용자가 있어서 일단 root 계정으로 접근할 수 있었고, 이에 대한 원인을 파악할 수 있었다. 원인은 /bin/su 파일의 권한이 rwsr-xr-x가 아니였다. 여기서 s 권한은 setuid로, user권한의 x 자리를 대신해 들어간다. 이 권한은 해당 파일 소유자의 권한을 빌려 사용할 수 있도록 하는 권한이다. [root@master ~]# ll /bin/su -rwxr-xr.. 2023. 12. 8.