본문 바로가기

개발일지/Java(자바)7

Mapstruct로 데이터 변환 적용하기 Mapstruct란? Spring Framework에서 개발할 때, 비즈니스 로직, 객체와 객체 간의 Mapping 등을 할 때 get, set을 일일이 넣어주는 것은 실수가 쉽고 생산성이 떨어진다. 특히나 Setter를 사용하는 것은 좋지 않다. Setter를 사용하면 안되는 이유는 Setter함수 호출을 통해 Entity의 값을 변경할 수 있다면, DB 데이터값 변경에 대한 히스토리를 코드를 보고 파악하기 어려워진다. 즉, Entity의 값을 변경한 의도를 파악하기 어렵다. get, set을 일일이 넣어주는 것을 대신 해주는 것이 Object Mapping 라이브러리이다. Object Mapping에는 여러 종류가 있는데,Mapstruct, ModelMapper, jmapper, orika 등이 있다.. 2022. 12. 16.
원시타입 vs 참조타입 (자바) 원시타입(Primitive type : 기본타입)과 참조타입(Reference type) 원시타입 정수, 실수, 문자, 논리 리터럴을 저장하는 타입을 말하고 원시 타입이라고도 부른다. 정수형 : byte, short, int, long 실수형 : float, double 문자형 : char 논리형 : boolean 실제 데이터 값을 저장하는 타입이다. 참조타입 간단하게 말하자면 기본 타입을 제외한 타입들을 말한다. 객체의 주소를 저장하는 타입이다. ex) 문자열, 배열, 열거, 클래스, 인터페이스 Java에서 실제 객체는 Heap 영역에 저장되며 참조 타입 변수는 스택 영역에 실제 객체들의 주소를 저장하여 객체를 사용할 때마다 참조 변수에 저장된 객체의 주소를 불러와 사용하는 방식이다. Stack 영역 .. 2022. 5. 7.
String vs StringBuffer vs StringBuilder String/ StringBuffer/ StringBuilder Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다. 그러나 연산횟수가 많아지거나 멀티쓰레드, Race condition 등의 상황이 자주 발생 한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해 주셔야 합니다! 경쟁상태(Race condition) : 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근하기 위해 경쟁하는 상태를 말한다. String과 StringBuffer, StringBuilder의 차이점 .. 2022. 4. 25.
객체지향 프로그래밍이란? 객체 지향 프로그래밍이란? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 ‘객체’들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 객체지향 프로그래밍은 레고 블럭 조립하듯이, 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법이다. 객체지향의 장점으로 코드의 재 사용성이 높다. 새로운 코드를 작성할 때 기존 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다.(유지보수가 용이하다.) 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를.. 2022. 4. 17.
Java - 멤버변수, 지역변수, 클래스변수, 인스턴스변수 변수를 선언위치에 따라 크게 구분하면 딱 2가지로 나눌 수 있다. 바로 멤버변수 / 지역변수 입니다. 멤버변수는 선언위치가 '클래스 영역' 이고, 지역변수의 선언위치는 '메소드나 생성자 내부' 이다 멤버변수는 다시 두 가지로 나누어진다 바로 클래스변수 / 인스턴스변수 이다 이 둘은 같은 멤버변수에 속하지만 필요한 상황이 굉장히 다르다 이해를 돕기 위해 예를 하나 들어보겠다. 우리가 게임을 처음 시작할 때, 캐릭터를 하나 만든다. 캐릭터를 만들 때 머리색깔을 블랙,골드,브라운 중에서 고를 수 있다고 하면, 머리색깔이라는 변수는 모든 캐릭터마다 다른 값을 가질 수 있다. 즉, 각각의 객체(=인스턴스)마다 개별적인 속성을 가져야 할 때, 우리는 인스턴스 변수를 선언해서 사용한다. 반대로 클래스 변수는, 모든 .. 2022. 4. 7.
JVM(Java Vertual Machine) JVM이란 JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신이란 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.) JVM 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JVM은 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다. 그리고 가장 중요한 메모리관리, Garbage collection을 수행한다. 그리고 JVM은 스택기반의 가상머신이다. ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다. 중요한 것은 운영체에에 의존적이지 않고 독립적으로 java .. 2022. 1. 23.