JAVA (16) 썸네일형 리스트형 string 타입 비교 조건문에서 NPE 예방하기 코딩할 때 실수 줄이기 위해 항상 리터럴을 앞에 두는 패턴을 습관화 하도록 하자. 기존 : 개선 : 만약, jobsecode가 null 일 경우, 첫번째는 NullPointerException이 발생하지만, 두번째 경우는 발생하지 않음! 첫번째는 jobsecode가 비교의 주체이기 때문에 먼저 나서고, 두번째는 비교 대상이기 때문에 먼저 나서지 않기 때문. spring 트랜잭션과 db트랜잭션 1. Spring 트랜잭션 vs. DB 트랜잭션 차이점비교 항목Spring 트랜잭션DB 트랜잭션주체Spring 프레임워크 (트랜잭션 매니저)DBMS (예: CUBRID, MySQL, Oracle 등)관리 대상여러 개의 DB 트랜잭션, 서비스 계층에서 트랜잭션 제어 가능하나의 DB 커넥션 내에서 실행되는 SQL 문들적용 범위메서드 단위로 트랜잭션 관리 가능 (@Transactional 사용)특정한 SQL 쿼리 실행 단위로 관리전파(Propagation) 지원여러 개의 트랜잭션을 하나로 묶어서 관리 가능단일 DB 커넥션 내에서만 관리트랜잭션 롤백런타임 예외가 발생하면 자동으로 롤백 가능ROLLBACK 명령을 직접 실행해야 함다중 데이터베이스 지원여러 개의 DB와 연동 가능 (JTA 사용)하나의 데이터베이스에.. 자바8 이상의 주요 문법 람다 표현식 임시로 사용할 임시 함수를 위한 표현식자바 기본 문법에선, 함수만 따로 선언할 수 없고 클래스 선언한다음 그 안에 함수를 선언해야 그 전체를 메서드로 구동할 수 가 있는데, 이러한 불편한 점을 보완하기 위해 등장 했다(var 1, var 2 . .) -> { 동작 1; 동작2; } 이런 형태!스트림 API컬렉션에 담긴 데이터를 처리하는 존재로써, 컬렉션에 추가된 메서드의 집합을 의미한다주요 메서드로는 forEach(), filter(), distinct(), map(), collect(), toList() 등이 있다Optionalnull 이 들어 있는 래퍼런스 변수의 멤버(필드나 메서드) 에 접근하려고 할 때 발생하는 예외인 NullPointerException을 유연하게 해결하기 위해 등.. equals() String 인스턴스의 값을 비교하려면, 동등성을 비교하는 메서드equals() 를 사용해야 한다. ('동일성' 은 같은 인스턴스를 참조함을 의미. 이것과 다름) equals()메서드는 Object클래스에서 상속된 것이므로, 오버라이딩 가능하며 클래스의 동등성 비교에 사용한다. 이때 hashCode() 메서드도 함께 오버라이딩 해주는 것이 좋다. : 컬렉션 중 Hash로 시작하는 컬렉션, HashMap, HashTable, HashSet 은 동일한 값을 비교하기 위해hashCode메서드와 equals메서드를 모두 사용한다.만약 equals메서드만 오버라이딩 한다면, hash로 시작하는 컬렉션에서 같은 값으로 판단해야 할 인스턴스들이마치 다른 인스턴스인 것처럼 동작할 것이다. 컬렉션 : List 자바에서 컬렉션이란 데이터의 집합을 의미한다.주요 컬렉션으로 List, Set, Map이 있는데, 이것은 모두 구현체가 아니고 인터페이스 이다. : ArrayList는 List인터페이스의 구현체이다. 다형성 : 상속과 인터페이스 다형성은 자바의 객체지향 개념을 관통하는 아주 중요한 개념이다.다형성의 정의는 다음과 같다. 하나의 객체가 내부적으로 여러 타입을 가질 수 있고, 어떤 타입이 들어 있느냐에 따라 각기 다른 동작을 하는 성질을 의미한다. 예를들어 Car라는 인터페이스를 정의했다고 가정한다.그리고 이 인터페이스를 구현하는 Sonata클래스와 Avante클래스를 각각 정의했다. 그렇다면, 인터페이스인 Car 타입의 참조변수에 이것의 구현체인 Sonata와 Avante의 인스턴스를 모두 대입할 수 있는데이것을 가능하도록 하는 특성이 바로 다형성이다. 이 예시를 부모클래스-자식클래스 상황에 비교하여도 다형성은 동일하게 적용된다. 즉, 인터페이스(혹은 부모클래스) 의 참조 변수로 구현 클래스(혹은 자식클래스) 의 인스턴스를 넣.. Cache, RAM, HDD/SSD Cache : 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소 이다또는, 빠른 접근이 가능한 메모리(램, 디스크 등)에 데이터를 저장하여, 나중에 같은 데이터가 요청될 때기존 저장된 값을 즉시 반환할 수 있도록 하는 방식 저장공간이 적고 비용이 비싼대신 빠른 성능을 제공한다.저장공간 계층구조가 이렇다고 한다! 이런 경우에 사용하면 좋다- 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래걸리는 경우 --> 서버에서 제공하는 API가 일정한 형식으로 데이터를 반환하는 경우! - 반복적으로 동일한 결과를 돌려주는 경우 (이미지나 썸네일 등) 캐시를 사용하면, 매번 서버에 요청하지 않고도 이전에 받은 데이터를 저장해두고빠르게 접근할 수 있다. 서버에서 데이터를 다시 가져오는데 걸리는 시간을 줄이기 .. JVM의 영역별 저장 메서드영역 : 클래스로딩, static 저장소힙 영역 : 객체생성 메모리스택 영역 : 변수 선언 메모리 이전 1 2 다음