본문 바로가기

Java6

JVM JVM 자바 가상머신이라고 불리며 자바 바이트 코드를 실행할 수 있는 주체로 JVM으로 인해 CPU나 운영체제와 독립적으로 동작이 가능하다. Class Loader 자바 컴퍼일러가 자바 파일을 컴파일하면 클래스 파일이 생성된다. 이렇게 생성된 파일을 엮어 Runtime Data Area 형태로 메모리에 적재하는 역할을 한다. Execution Engine 메모리에 적재된 클래스들을 기계어로 변경해 명령어 단위로 실행하는 역할을 한다. 명령어를 하나하나 실행하는 인터프리티 방식과 실행 시점에 자주 쓸만한 코드들을 기계어로 변환시켜놓고 저장해서 사용하는 JIT 방식이 있다. Gargage Collector Runtime Data Area의 힙 영역에 생성된 객체들중 참조되지(사용되지)않는 객체를 찾아 수집하.. 2023. 1. 1.
박싱과 언박싱 박싱과 언박싱 단어 그대로 이해하면 쉽다. 포장과 포장을 뜯는 행위이다. 그렇다면 어떠한것을 포장 또는 포장을 뜯는걸까?? Wrapper Class(래퍼클래스) 우선 박싱과 언박싱을 알기전에 래퍼클래스에 대해 알아야 한다. 자바의 자료형은 크게 기본타입(primitive type)과 참조타입(reference type)으로 나뉜다. 기본타입 : char, int, float, double, boolean 참조타입 : class, interface 프로그래밍을 하다보면 기본타입의 데이터를 객체로 표현해야할 때가 있다. 이럴때 기본자료 타입을 객체로 다루기위해 사용하는 클래스를 래퍼클래스라고 한다. 자바의 모든 기본타입 자료형은 값을 가지는 객체를 생성할 수 있다. 이러한 객체를 포장객체리고 표현하는데 기본.. 2023. 1. 1.
ORM 최근 JPA에 대해 공부하고 있다. JPA란 Java Persistence API의 약자로 현재 자바 진영의 ORM 기술 표준이라고 한다. JPA는 자바어플리케이션에서 RDB(관계형 데이터베이스)를 사용하는 방식을 정의한 인터페이스이다. 따라서 무언가 특정기능을 하는 기술은 아니라는 것이다. 스프링의 PSA에 의해 표준 인터페이스를 정하는데 그 중 ORM을 사용하기 위해 만들어진 인터페이스가 바로 JPA라고 한다. 그렇다면 ORM이란 무엇인가?? 보통 자바에서 DB를 사용할 때에는 SQL Mapper를 이용한다. 그렇다면 ORM과 Mapper는 어떤 차이가 있을까? Mapper는 SQL(쿼리)를 직접 명시해주어야 한다. 하지만 ORM은 DB테이블을 자바 객체로 매핑함으로써 그 관계를 바탕으로 SQL을 자.. 2021. 2. 17.
@Valid를 이용한 데이터 유효성 체크 최근 회사일이 많이 바빠서 따로 개인공부를 할 시간이 없었다....(사실은 퇴근하면 피곤해서 아무것도 하기 싫었었다가 맞다 ㅎㅎㅎ) 아무튼 오늘은 @Valid 어노테이션을 통한 데이터 유효체크에 대해 글을 작성해보고자 한다. 최근 Map에서 DTO를 이용한 방식으로 작업방식을 바꾸면서 한가지 애를먹은 부분이 있었다. 보통 API 개발을 할 때 request parameter를 넘겨받을 때 HttpMethod가 Post 또는 Put일 경우 특정 데이터를 필수적으로 요구해야하는 경우가 있을 수 있다. 이럴 때에는 필수적으로 요구하는 데이터가 없는 경우 별도의 예외상황을 발생시켜 요청자에게 이러한 부분으로 문제가 발생했다는 것을 알려야하는데 통상적으로 400(Bad Request) 응답으로 처리했었다. Map.. 2020. 12. 15.