본문 바로가기

전체 글38

영속성 컨텍스트 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어 "엔티티를 영구 저장하는 환경"이라는 뜻 EntityManager.persist(entity) 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 영속성 컨텍스트의 이점 1. 엔티티 조회, 1차 캐시 Member member = new Member(); member.setId("member1"); member.setName("회원1"); //1차 캐시에 저장됨 em.persist(member); //1차 캐시에서 조회 Member findMember = em.find(Member.class, "member1"); - 한 트랜잭션 안에서만 1차 캐시가 작동하므로 큰 이점은 없다. 2. 영속 엔티티의 동.. 2021. 11. 24.
트랜잭션이란? 트랜잭션(Transaction)이란? 트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해 수행하는 논리적인 작업의 단위를 뜻합니다. 데이터베이스의 상태를 변화시킨다는 것은 DDL, DML을 통해 작업을 수행하는 것을 의미 합니다. 이러한 작업의 단위는 SQL한 문장이 아닌 여러 문장이 될 수 있습니다. 예를들어, 게시판에서 내가 글을 작성하고 다시 게시판으로 돌아오면 내가 작성한 글이 업데이트된 게시판을 보게 됩니다. 여기서 INSERT와 SELECT 둘 다 합친것이 작업 단위 입니다. 트랜잭션의 특징(ACID) 원자성(Atomicity) : 트랜잭션의 연산은 모든 연산이 완벽히 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션은 실패합니다. 일관성(Consistency) : 트랜잭션은 유효한 상태로만 .. 2021. 10. 23.
GC(Garbage Collector) 란? Garbage Collector(GC)란?프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게된 영역을 해제하는 기능Ex) new 라는 키워드가 힙 영역에서 동적으로 메모리를 할당해주는 역할을 하고, 그렇게 동적으로 할당된 메모리를 자동으로 해제해주는 것이 GC.💡Stack : 정적으로 할당한 메모리 영역, 원시 타입의 데이터가 값과 함께 할당, Heap영역에 생성된 Object 타입 데이터의 참조 값 할당💡Heap : 동적으로 할당한 메모리 영역으로, 모든 Object 타입의 데이터가 할당, Heap영역의 Object를 가리키는 참조 변수가 Stack에 할당 GC는 언제 동작하는가GC는 JVM에 올라가 있기 때문에 기본적으로 런타임시에 동작. GC 과정Garbage Collector가 Stack의 .. 2021. 10. 20.
Process와 Thread Process란? 프로세스는 OS가 메모리 등의 자원을 할당해준 실행중인 프로그램을 말합니다. CPU에 할당되어 순차적으로 수행될 수 있는 능동적 개체 각각의 프로세스는 서로 메모리 공간을 독자적으로 갖기 때문에 서로 메모리 공간을 공유하지 못합니다. 각각 독립된 메모리 영역(Code, Stack, Heap, Data)을 할당 받습니다. Thread란? 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스의 특정한 수행 경로 프로세스가 할당 받은 자원을 이용하는 실행의 단위 스레드는 프로세스 내에서 Stack만 따로 할당받고 나머지 영역은 공유한다. 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다. 멀티 프.. 2021. 9. 22.
REST api 란? REST(RESTful)란 무엇일까요? 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다. 즉, HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미합니다. REST의 장단점 장점 HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다. HTTP프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다. HTTP표준 프로토콜을 따르는 모든 플랫폼에서 적용 가능하다. REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.(구체적) 서버와 클라이언트의 역할을 명확하게 분리한다. 단점 표준이 존재하지.. 2021. 9. 22.
Java의 실행과정과 JVM 전체적인 Java의 실행과정 전체적인 자바의 실행과정은 다음과 같습니다. Java Compiler Compiler란 해석기라는 의미로, 자바 소스 파일을 바이트파일로 바꿉니다. 일반적으로 소스파일을 컴파일한 파일은 바이너리 코드의 형태를 갖는데, 자바는 바이트 코드를 가진 파일로 변환이 됩니다. 이러한 바이트 코드로 작성된 클래스 파일은 JVM이 읽어들여 실행합니다. JVM(Java Virtual Machine) JVM은 자바 가상 머신으로 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것으로, 컴파일러가 변환한 클래스 파일을 읽어들여 실행시킵니다. 자바의 장점인 운영체제의 구애를 받지 않는 점과 메모리 관리가 용이하다는 점은 JVM이 가능하게 해주는 것입니다. *Linking.. 2021. 9. 18.