본문 바로가기

Java

(5)
Jpa 의 변경감지를 통한 업데이트를 Reflection 을 이용해 해보자 어느날 친구에게서 Jpa 사용시 업데이트를 어떤 방식으로하는지 질문이 들어왔다. jpa 를 사용하는 많은곳은 jpa 의 더티체킹 즉 변경감지를 통해 업데이트를 할 것이다. 이때 좋은 업데이트를 위한 여러가지 고려할 사항이 있다. 1. 무분별한 setter 를 사용하지 마라. - 이는 무분별한 setter 사용으로 인해 안전하게 다루어져야할 데이터가 쉽게 변경될 수 있고, 이러한 변경점을 찾기 힘들게 되어 향후 유지보수를 어렵게 만들기 때문이다. -> 이러한 해결점으로 entity 내에 상태변경 메서드를 만들 수 있다. 2. entity 의 상태변경이 필요할 때 적절한 메서드를 만든다. - 이는 entity class 의 크기가 커져, 이또한 유지보수가 힘들어질 수 있다. 사실 그동안 이러한 고민을 알고는..
동시성 문제 / Synchronized / Pessimistic Lock / Optimistic Lock 간단하게 살펴보자 참고 강의 재고시스템으로 알아보는 동시성이슈 해결방법 - 인프런 | 강의 동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다., - 강의 소개 | 인프런... www.inflearn.com 우리의 프로그램을 자원을 감시하는 감시자라 생각해보자. 그리고 필요한 데이터를 자원이라하고 자원을 사용하는 여러명의 사용자들을 각각의 쓰레드라고 가정하고 생각을 해보자. 만약 100개의 자원이 존재하고 쓰레드들이 자원을 하나씩 가져가는 상황일때, 감시자는 자원을 쓰레드들에게 하나씩 내어주고 하나씩 자원의 수를 감소시켜 관리할 것이다. 그런데 이때 쓰레드들이 거의 동시다발적으로 자원을 가져가면 어떻게될까? 감시자는 멘봉이 올 것이다... 쓰레드 1에게 자원을 나눠주고 아직 자원의 수량을 감소시키지도 않았는데 다..
암호화 Digest 암호화란? 암호화는 원래 정보를 인식할 수 없는 형직으로 변환하는 프로세스이다. 암호화는 일반적으로 키 알고리즘을 사용하게된다. 키 유형 대칭 키 : 대칭 키 암호화는 평문의 암호화와 암호문의 복호화 모두에 동일한 암호화 키를 사용하는 알고리즘이다. 예를 들어 "A" 는 공유 키 "K" 로 메시지를 암호화하고 "B" 역시 공유 키 "K" 로만 암호화된 메시지를 해독할 수 있다. 비대칭 키 : 비대칭 암호화는 암호화에 2쌍의 키를 사용한다. 하나는 암호화하고 다른 하나는 해독한다는 개념을 기반으로 한다. 예를 들어 "A" 는 공개 키와 개인 키를 만들고 모든 사람과 공개 키를 공유한다. "A" 는 개인 키로 메시지를 암호화하여 "B" 에게 보낼 수 있다. / "B" 는 공개적으로 사용할 수 있는 "A" 의..
JDK, JRE, JVM JDK JDK(Java Development Kit )는 Java 애플리케이션을 개발하는 데 사용되는 소프트웨어 개발 환경이다. JDK 는 JRE(Java Runtime Environment), 인터프리터/로더(Java), 컴파일러(javac), 아카이버(jar), 문서 생성기(Javadoc) 및 디버그 등 기타 Java 개발에 필요한 도구가 포함된다. JDK의 핵심 구성 요소는 간단하게 다음과 같다. JRE 개발 도구 JDK 에 포함되어 있는 요소를 간단하게 몇가지만 살펴보면 다음과 같다. javac – 클래스 및 인터페이스 정의를 읽고 클래스 파일로 컴파일 java – Java 애플리케이션을 시작합니다. javadoc – Java 소스 파일에서 API 문서의 HTML 페이지 생성 appletviewe..
Java Compile Process 자바는 OS 에 독립적인 특징 (WORA: Write Once Run Anywhere) 을 가지고 있다. 어떻게 OS 에 독립적인 특징을 가질 수 있을까? 이는 JVM 때문이라고 할 수 있다. 자바는 Compiler ( javac.exe ) 에 의해 '.java' 파일을 java bytecode 로 변환해 '.class' 파일을 만든다. '.class' 파일에 쓰여진 java bytecode 는 java JVM( Java Virtual Machine ) 에 의해(정확히는 JIT Java-In-Time compilation 또는 동적번역 Dynamic-Translation 에 의해) binary 파일로 변환되고 컴퓨터가 이해하는 저수준의 언어가 되어 실행되게 된다. 즉, 자바 Compiler(javac.e..