Language/Java8 [JPA] 영속성 컨텍스트란 영속성 컨텍스트 정의 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 생성 및 접근 방법 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed): 영속성 컨텍스트에 저장된 상태 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed): 삭제된 상태 비영속 엔티티 객체를 생성했지만 아직 영.. Language/Java 2024. 1. 29. [Java] 모듈 결합도와 응집도 오늘은 모듈 결합도와 응집도 개념과 객체 지향 프로그래밍의 5가지 원칙인 SOLID에 간략하게 알아보겠습니다. SOLID 원칙 우리가 SOLID를 알아야 하는 이유 먼저, SOLID은 객체 지향 프로그래밍 원칙입니다. 설계 원칙을 모른다고 자바 프로그래밍을 할 수 없는 것은 아닙니다. 충분히 자바 프로그래머로서 일을 할 수 있습니다. 그럼에도 우리가 이를 학습해야 하는 이유는 무엇일까요? 결론부터 말씀 드리면, SOLID 원칙은 객체 지향 프로그랭을 할 때 발생될 수 있는 문제들을 해결하기 위한 검증된 프로그래밍 방법론이기 때문입니다. 비록 이러한 문제들을 직접 마주한 경험이 없더라도, SOLID 원칙을 학습하면서 개발하며 발생할 수 있는 문제에 대해 미리 알게 되고 그에 대한 해결책까지 알 수 있습니다.. Language/Java 2023. 10. 11. [Java] 동기화란 무엇인가? (1) 상호배제 동기화 방법 (자바에선 멀티 스레드 환경에서 어떻게 동기화를 할까?) 멀티 스레드 혹은 멀티 프로세스 환경에서 동기화를 보장하려면, 실행 순서 제어와 상호 배제가 필요합니다. 실행 순서 제어란 공유 자원에 대한 작업이 순서대로 작업되도록 보장하는 것입니다. 상호 배제란 동시에 접근해서는 안되는 자원(공유 자원)에 하나만 접근하도록 보장하는 것입니다. 자바에선 동기화를 보장하기 위해, 모니터 인터페이스를 제공합니다. 모니터는 프로그래밍 언어 수준에서 동기화를 지원합니다. 자바의 각 객체는 모니터 락을 소유하고 있으며, 각 스레드는 이 모니터 락을 잠그거나 해제할 수 있습니다. 한 번에 하나의 스레드만이 모니터의 잠금을 유지할 수 있습니다. 해당 모니터를 잠그려는 다른 스레드는 해당 모니터에서 잠금을 얻을 .. Language/Java 2023. 10. 3. [Java] JVM의 동작 원리 (부제 : Java를 처음 공부하는 당신에게) 들어가기에 앞서 먼저, 질문을 먼저 드릴게요. 여러분은 코딩을 잘하고 싶으신가요? 저 역시 정말 코딩을 잘하고 싶은 사람 중 하나인데요, 여러분은 코딩을 하는 이유가 무엇인가요? 저는 코딩을 하는 이유는 문제해결이라고 생각해요. 그렇다면 코딩을 잘하기 위해선, 어떻게 해야 할까요? 바로 사용하는 프로그래밍 언어의 탄생 배경과 동작 원리를 이해해야 한다고 생각해요! 이번 글은 자바를 새롭게 학습하시는 분들을 위한 글을 작성해봤어요. 사실 이 글은 자바에 관해 잘 알지 못하는 제 자신을 위한 글이기도 해요! 만약 독자 분들께서 비슷한 생각이 드신다면, 이번 글을 통해서 저와 함께 자바란 프로그래밍 언어에 대한 이해를 높여봐요! Java의 탄생 배경 먼저, 결론부터 이야기할게요. Java는 1991년 썬 마이.. Language/Java 2023. 9. 22. [Java] IntelliJ에서 Junit으로 테스트 환경을 구축하는 방법 서론 오늘은 Java와 IntelliJ 환경에서 테스트 환경을 구축하는 방법과 Junit을 활용해 간단하게 테스트 코드를 작성하는 방법에 대해서 알아보겠습니다. 본격적인 내용에 들어가기 앞서, 먼저 질문을 하나 드리고자 합니다. 우리(개발자)는 왜 작성해야 할까요? 테스트 코드를 작성해야 하는 까닭 자바를 활용한 백엔드에선 테스트 코드 없이 테스팅하기 어렵다. 제 경험을 이야기해보자면, 저는 주로 Javascript를 활용했기 때문에, 제가 작성한 코드의 결괏값을 확인하기 편했었습니다. console로 결괏값을 출력하면 끝이기 때문이죠. 사내에서 프론트엔드 개발할 때도 테스트코드의 필요성에 대해서 크게 체감하진 못했습니다. 반면 백엔드 개발은 테스트 코드 없이 각각의 기능을 테스트하기 어렵다고 느꼈습니다.. Language/Java 2023. 6. 22. [Java] 객체 생성 패턴이란? (빌더패턴, 자바빈패턴, 점층적 생성자 패턴) 서론 롬복의 @Builder 어노테이션과 빌더패턴에 대해 알아보도록 하겠습니다. 본론 개요 빌더 패턴은 객체를 생성할 때 사용하는 디자인 패턴 중 하나로, 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 중 하나입니다. 객체를 생성하는 클래스와 표한하는 클래스를 분리하여, 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공합니다. 빌더 패턴을 사용하는 이유 Builder 패턴은 "복잡한 객체의 구성과 표현을 분리하여 동일한 구성 프로세스가 여러 개의 서로 다른 표현을 생성할 수 있도록" 하는 것을 목표로 합니다. - Gang of Four design patterns 제가 느낀 장점은 한 마디로 객체를 생성할 때, 빠진 값이 없도록 생성하도록 돕는다는 것 입니다. 객체를 생성하는 디자인.. Language/Java 2023. 6. 21. [Java] JDK, JRE, JVM 서론 이 글은 자바를 공부하기 전에 알아두면 좋을 것들!! #1(링크)를 참조하여 정리한 글임을 밝힙니다. 본론 자바의 특성 유명한 문구죠. "Write Once, Run Anywhere". C언어의 경우, 운영체제마다 각각 다른 컴파일러가 존재합니다. 같은 바이트 코드임에도, 운영체제에 따라 다르게 해석됩니다. 그러나 자바는 하나의 컴파일러만 존재하고 각 운영체제에 맞게 바이트 코드를 변환해주는 JVM이 존재합니다. 따라서 어떤 운영체제든, 같은 컴파일러를 사용할 수 있고 이로인해 운영체제와 상관 없이 일정하게 코드를 호환할 수 있습니다. 컴파일 되기까지 자바 언어를 컴퓨터가 이해하려면 0과 1로 구성된 바이너리로 변환되어야 합니다. 이를 컴파일이라고 합니다. 운영체제마다 컴파일러가 다른데, 앞서 말했.. Language/Java 2022. 5. 22. [Java] 자주 쓰이는 util 클래스 정리하기 (1) HashMap 서론 오늘은 자바 프로그래밍을 하면서 유용하게 쓰이는 util 클래스 중 하나인 HashMap에 관해 정리하는 시간을 갖겠습니다. 본론 정의 먼저, Map은 key와 value로 구성된 객체를 저장하는 자료구조입니다. key와 value는 모두 객체이며, value는 중복될 수 있지만 key 값은 중복될 수 없습니다. 식별자로 유일한 key를 갖으므로 O(1)의 탐색시간을 특성을 갖고 있습니다. HashMap은 이러한 Map의 인터페이스를 구현한 대표적인 Map 컬렉션입니다. 차이점은 Map의 key 값을 저장할 때 Hashing(해싱)을 사용하여 많은 양의 데이터를 검색할 때 빠른 속도로 탐색할 수 있도록 돕는다는 점입니다. 선언방법 HashMap은 아래와 같이 선언할 수 있습니다. 첫번째 제너릭 인자.. Language/Java 2022. 5. 12. 이전 1 다음 반응형