목록분류 전체보기 (100)
nathan_H
들어가기전 객체 개념 물리적으로 존재하는 것(자동차, 책 등등) 추상적인 것 중 자신의 속성과 동작을 가지는 모든 것 객체는 필드과 메소드로 구성되어 자바 객체 모델링이 가능함 현실 세계의 객체를 소프트웨어의 객체로 모델링 하는 과정 객체 지향 프로그래밍 캡슐화 https://docsplayer.org/104244489-Chapter-01-html.html 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것 외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용 가능 필드와 메소드를 캡슐화 하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함 자바 언어는 캡슐화된 멤버를 노출 시킬 것인지 숨길 것인지 결정하기 위해 접근 제한자(..
C, C++을 배우지 않고 Java를 배우는 경우 참조 타입에 대해서 낯선 느낌이 들 수 있다. 그리고 실제 참조 타입에 대한 이해가 부족해 프로그램을 만드는 과정에서 참조 타입에 대한 것을 고려하지 않고 짠 프로그램은 나중에 어떠한 큰 문제들이 발생할 위험이 커지게 된다. 좋은 프로그램이라 함은 데이터를 얼마나 안전하게 가져오고 사용하는지에 따라 결정이 되는데, 참조 타입이 거기서 핵심적인 역할을 한다고 해도 과언이 아니다. 그래서 이제 참조 타입, 그리고 이 글의 제목인 Call By Value, Call By Reference가 무엇인지 알아보자. 참조 변수 자바의 타입 본격적으로 참조 타입을 알아보기 전에 자바의 타입에 대해 소개하자면 자바는 크게 2가지의 타입이 존재를 한다. https://ww..
Enum이란? Enum은 일정 개수의 상수 값을 정의한 다음, 그 외의 값을 허용하지 않는 타입 C, C++, C# 와 같은 언어에도 Enum 이 존재함 정수 열거형 자바는 과거 Enum 타입을 지원하지 않았는데, 그래서 아래와 같이 정수 상수 값을 한 묶으로 사용해 선언하곤 했다. public static final int GALAXY_NOTE = 0; public static final int GALAXY_TAP = 1; public static final int GALAXY_S = 2; public static final int APPLE_IPONE = 0; public static final int APPLE_IPAD = 1; public static final int APPLE_SE = 2; 그..
이번 포스팅은 지난 트랜잭션 포스팅의 연장선으로 트랜잭션이 어떤 방식으로 관리되는지에 대한 내용을 담고자 한다. 병행 수행과 병행 제어 DBMS는 여러 사용자가 데이터베이스를 동시에 공유할 수 있도록 여러 개의 트랜잭션이 동시에 수행되는 병행 수행을 지원을 하기 되는데, 병행 수행은 실제로 여러 트랜잭션들이 차례로 번갈아 수행되는 인터리빙 방식을 진행함. 병행 수행을 하더라도 각 트랜잭션이 다른 트랜잭션의 방해를 받지 않고 정확한 수행 결과를 얻을 수 있도록 제어해야 함. 서로 다른 데이터를 사용하여 연산을 수행하는 경우에는 괜찮지만, 같은 데이터에 접근하여 변경하려고 할 때 문제가 발생함. 여러 개의 트랜잭션이 병행 수행하면서 같은 데이터 접근하여 연산을 실행하더라도, 문제가 발생하지 않고 정확한 수행..
데이터 베이스는 우리가 흔히 사용하는 파일 시스템과는 달리 기본적으로 4가지 특징이 존재한다. 1) 실시간 접근성 2) 계속적인 변화 3) 동시 공유 4) 내용에 따른 참조 이외에도 디비의 장점이라고 볼 수 있는 부분으로는 데이터의 일관성과 지속성이라고 볼 수 있다. 하지만 보통 DBA나 데이터 베이스를 깊게 다루지 않는 이상. 개발을 하는 입장에서는 DBMS가 어떻게 데이터의 일관성과 지속성을 관리하는지에 잘 모르는 경우가 많다. (나도 자세히 알지는 못한다.) 그리고 아직까지 짧은 나의 개발 경험상 개발자 입장에서는 질의에 대한 성능 최적화 부분에만 튜닝을 잘해주면 됐다. 그러나, DBMS가 어떻게 동작하고, 데이터를 관리하는지에 대해 한층 깊은 이해도가 생긴다면, 추후 데이터베이스를 활용한 개발 측..
Entity 조회 Spring JPA 를 사용할시 Entity를 가져오는 방법은 크게 두가지이다. EntityManager.find(target) 메소드를 통한 영속성 컨택스트의 1차 캐시 혹은 데이터 베이스에서 가져온 2차 캐시를 통한 실제 엔티티 조회 EntityManager.getReference(target) 메소드를 통한 Proxy 엔티티를 조회. 1번 같은 경우에는 아마 JPA를 사용해본 경험이 있으면, 익숙하게 다가오고 많이 사용 해봤을것이다. 하지만 2번의 경우는 약간은 생소하고 Proxy 라는 개념 자체도 처음 듣는 사람도 있을 것이다. 여기서 Proxy 라 함은 네트워크 서비스에서 간접적으로 대리 응답을 해줄때 사용하는 개념과 비슷하다고 보면 된다. 즉 Proxy는 실제 엔티티를 조회하..
자바 스프링을 활용하다 보면은 데이터 베이스를 통한 데이터 관리를 할때 항상 마주치는 도구로 JPA가 있다. 그리고 JPA의 개념중 일부인 "영속성 컨택스트"라는 용어를 자주 접하게 될텐데, 나 또한 처음 JPA를 사용할때는 제대로 이해하지 않은 상태에서 코드만 짜기 바빴다. 그러다 보니 나중에 에러나 디버깅을 할때 빠르게 문제점을 찾지 못했고, 제대로된 개념이 부족하다고 생각이 들어 이번 글을 통해 JPA의 매커니즘인 영속성 컨택스트에 대해 정리해볼까 한다. Persistence Context JPA 는 Persistence Context을 통해서 entity 에 대한 application의 lifecycle을 관리. 그리고 EntityManager API 를 통해 entity instance의 영속성..
Index 란? 나는 현재 노션을 적극 활용해 내가 공부하는 내용 정리를 많이 하는 편이다. 그리고 작성 때마다 항상 위와 같이 content 별로 바로 찾아서 갈 수 있도록 보여주는 색인 기능을 자주 활용한다. 만약 색인을 사용하지 않는다면, 데이터 삽입이라는 부분을 보고 싶을 때 스크롤을 쭉 내려야 하는 번거로움이 생긴다. 즉 색인(Index) 기능은 "내가 원하는 부분에 쉽고 빠르게 찾아서 전달해주는 역할"을 한다. 그리고 데이터 베이스에서도 색인이라는 기능은 똑같이 "정보 검색"에 있어 성능을 최적화시켜줄 수 있는 유용한 도구로 많이 사용된다. 왜 DB에서 Index를 사용해야 할까? 다시 한번 디비 관점에서 "왜" 인덱스를 사용해야 하는지에 이야기해보면, 위 예시서 SELECT 문을 활용해 SC..