반응형

Programming/Java 70

역할 분리를 위한 Entity, DTO 개념과 차이점

'Entity, DTO 개념과 차이점 (+ VO)' - Entity Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체입니다. (DB의 테이블과 1:1로 매핑되며, 테이블이 가지지 않는 컬럼을 필드로 가져서는 안 됩니다.) Entity는 데이터베이스 영속성(persistent)의 목적으로 사용되는 객체이며, 때문에 요청(Request)이나 응답(Response) 값을 전달하는 클래스로 사용하는 것은 좋지 않습니다. 또 많은 서비스 클래스와 비즈니스 로직들이 Entity 클래스를 기준으로 동작하기 때문에 Entity 클래스가 변경되면 여러 클래스에 영향을 줄 수 있습니다. *** Entity에서는 setter 메서드의 사용을 지양해..

Programming/Java 2021.12.21

Java AES-256 양방향 암호화 제대로 알고 사용하기

'Java 양방향 암호화 AES-256 제대로 알고 사용하기' /* 프로젝트에서 양방향 암호화를 하기 위해서 AES-256 코드를 구글링 하여 사용하였는데, 나중에 알고 보니 사용하던 것이 AES-256이 아닌 AES-128인 경우가 있었습니다. 코드를 가져와서 사용하더라도 기본적인 원리는 알고 사용해야겠다는 생각에 AES-256 암호화를 정리하게 되었습니다. */ 본격적인 시작에 앞서 단방향 암호화 알고리즘과 양방향 암호화 알고리즘의 차이점에 대해서 간단하게 알아보겠습니다. 먼저 단방향 암호화는 평문을 암호화 했을 때 다시 평문으로 되돌리는 것(복호화)을 할 수 없는 암호화 방식으로 패스워드 암호화에 사용되며 대표적으로 'SHA-256'이 있습니다. 양방향 암호화는 평문에서 암호문으로, 암호문에서 평문..

Programming/Java 2021.12.15

Java 직렬화, 역직렬화 방법 Serializable interface

'자바 직렬화(Serialization)와 역직렬화(Deserialization)' 자바 시스템 내부에서 사용되는 객체(Object) 또는 데이터(Data)를 외부 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술을 '직렬화(Serialization)'라고 합니다. 반대로 바이트로 변환된 데이터를 원래대로 객체(Object)나 데이터(Data)로 변환하는 기술을 '역직렬화(Deserialization)'라고 합니다. 시스템적으로 본다면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술이 '직렬화'이며, 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM에 상주시키는 것을 '역..

Programming/Java 2021.12.13

자바 Java 상속, 부모 클래스와 자식 클래스(extends, super)

'Java 상속 (Inheritance)' Inheritance is the process by which a new class is created from another class. [자식 클래스] extends [부모 클래스] [하위 클래스] extends [상위 클래스] [파생된 클래스] extends [기반 클래스] [새로 작성하고자 하는 클래스] extends [상속 받고자하는 클래스] 자바에서 상속(Inheritance)이라는 개념은 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)의 관계에서 발생하며, '자식 클래스가 부모 클래스를 상속받는다.'라고 표현합니다. 상속을 받은 자식 클래스는 부모 클래스에 선언되어 있는 private 접근 제한을 갖는 필드와 메소드를메서드를 제외한 publ..

Programming/Java 2021.12.11

Java Optional Class 기본적인 이해

java.util.Optional (Java8부터 도입) Optional is primarily intended for use as a method return type where there is a clear need to represent "no result" and where using null is likely to cause errors. A variable whose type is Optional should never itself be null. it should always point to an Optional instance. (Java SE 9 & JDK 9 / Optional API Note 참조) 옵셔널은 주로 "결과 없음"을 나타낼 필요가 분명하고 null을 사용하면 오류가 발생할..

Programming/Java 2021.12.06

Java 조건문 - if문과 switch문의 핵심

'if문과 switch문의 핵심' if문 조건식과 문장을 포함하는 블럭'{ }'으로 구성되어 있습니다. 조건식의 연산 결과에 따라서 실행할 문장이 달라지기 때문에 프로그램의 실행 흐름을 변경할 수 있습니다. -1 블럭 내의 문장이 하나뿐일 경우 괄호 '{ }'를 생략할 수 있지만 생략하지 않고 쓰는 것이 좋습니다. 이유는 나중에 새로운 문장들이 추가되면 다시 '{ }' 괄호로 문장들을 감싸줘야 하는데, 이때 괄호를 추가하는 것을 잊어버리기 쉽기 때문입니다. -2 위 이미지의 왼쪽의 코드와 같이 상반된 관계에 있는 조건식을 'if - else' 문으로 바꿨을 때의 장점은 '하나의 조건식만 계산하면 된다'는 것입니다. -3 'if - else if - else' 문에서 마지막 'else' 블럭은 생략할 수 ..

Programming/Java 2021.12.06

Java 삼항식, 삼항연산자(Conditional Operator) 사용하는 방법

삼항연산자는 전체 프로그래밍에서 언어를 불문하고 많이 사용되는 코드입니다. 프로그래밍을 하다 보면 if else 분기문을 사용하게 되는 경우가 많은데, 이때 단순한 if 문을 사용할 경우 if else 문을 대신하여 심플한 분기문을 만드는데 특화된 방식입니다. // if else 문 int bigger; if (num1 > num2) { bigger = num1; } else { bigger = num2; } // 삼항연산자 int bigger = (num1 > num2) ? num1 : num2; 예를 들어 다음과 같이 두 수를 비교하는 간단한 if 문의 경우에 삼항연산자를 사용하게 되면 코드의 라인 수가 눈에 띄게 줄어들게 됩니다. 삼항연산자는 '(조건문) ? 참 : 거짓' 형식의 문법을 가지게 되는..

Programming/Java 2021.12.02

상수와 리터럴 (constant & literal) 정리

해당하는 내용은 'Java의 정석 - 남궁 성' 도서의 내용을 참고하여 정리한 것입니다. 상수 (constant) final int MAX_VALUE = 100; // 상수 선언과 동시에 초기화 상수(constant)는 변수와 마찬가지로 '값을 저장할 수 있는 공간' 이지만 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없다는 특징이 있습니다. 사용 방법은 변수의 타입 앞에 'final' 키워드를 붙여서 사용합니다. * JDK 1.6 이전에는 상수 선언과 동시에 초기화가 필수였으나, 1.6 이후부터는 선언과 동시에 초기화하지 않아도 됩니다. 하지만 상수는 선언과 동시에 초기화하는 것이 좋습니다. 리터럴 (literal) int year = 2021; // year : 변수, 2021 : 리터럴..

Programming/Java 2021.10.27

날짜와 시간을 다루는 LocalDate, LocalTime, LocalDateTime (java.time 패키지) 기본 개념

Java 날짜와 시간을 나타내는 Calendar class [Java] 날짜와 시간을 나타내는 Calender class 날짜와 시간은 어떤 프로젝트에서든 뺄 수 없는 데이터입니다. 개발을 하며 앞으로 계속 사용될 날짜와 시간에 대해 정리하고 싶어서 공부한 내용을 정 wildeveloperetrain.tistory.com java.time 패키지 java.time 패키지는 이전 포스팅에서 정리한 jdk1.0에서 나온 Date, jdk1.1에서 나온 Calendar의 단점을 해소하기 위해 jdk1.8부터 사용되었습니다. java.time 패키지 아래에는 4가지 하위 패키지가 존재하는데요. java.time : 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공 java.time.chrono : 표준(ISO..

Programming/Java 2021.10.19

Java 날짜와 시간을 나타내는 Calendar class

[Java] 날짜와 시간을 나타내는 Calender class 날짜와 시간은 어떤 프로젝트에서든 뺄 수 없는 데이터입니다. 개발을 하며 앞으로 계속 사용될 날짜와 시간에 대해 정리하고 싶어서 공부한 내용을 정리합니다. 'Date class'는 JDK 1.0부터 제공된 클래스로 제공되는 기능이 부족하여 JDK1.1부터 'Calendar class'가 나오게 되었습니다. 현재는 기존 클래스들의 단점을 개선한 JDK 1.8부터 나온 java.time 패키지의 'LocalDate', 'LocalTime', 'LocalDateTime'가 많이 사용되는데요. Date와 Calendar 역시 아직까지 사용되는 부분이 있기 때문에 간단하게 먼저 정리하려고 합니다. Calendar cal = new Calendar();..

Programming/Java 2021.10.18
반응형