[Spring] dispatcher
·
카테고리 없음
보호되어 있는 글입니다.
JSCODE 스터디 후기
·
기타
지난 3월부터 지난주까지 매주 금요일 진행했던 자바 면접 스터디 후기입니다. 저녁 8시부터 30분동안은 멘토링을 진행하고 나머지 시간에 조를 구성해서 1인당 약 20분씩 모의 면접을 진행했습니다. 기술적인 질문뿐만 아니라 인성 면접도 준비할 수 있어서 좋았습니다.신청계기자바를 활용해서 업무를 수행하지만 막상 제대로 공부해본 적은 없는것 같아 이번 기회에 공부해보면 어떨까하고 신청했습니다. JVM, GC, 동시성, 스트림 등등 전반적인 내용 모두 공부 했습니다. 아직은 한 번 훑어본 정도긴 하지만 추후 다시 자바 스터디를 한다면 좀 더 깊게 이해 할 수 있을 것 같습니다.KPT 회고잘했던 점, 아쉬움 점, 앞으로 시도할 것을 기준으로 회고를 해봤습니다.Keep : 퇴근 후에도 공부하는 게 어렵긴 하지만 할..
[DB] 격리수준
·
DB
트랜잭션의 격리 수준(Isolation Level)이란 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것이다. 트랜잭션의 격리 수준은 격리 수준이 높은 순서대로 SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITED가 존재한다.격리 수준이 낮으면 의도했던 코드와 다르게 데이터가 변경될 수 있다. 격리 수준이 낮으면 변경으로 인한 부작용이 발생할 수 있고, 격리 수준이 높으면 시간당 처리할 수 있는 쿼리 수가 낮아지기 때문에 적절한 설정값을 고려해야 한다.발생할 수 있는 부작용 세 가지Dirty Read트랜잭션A에서 데이터 변경 후 커밋하기 전에 트랜잭션B에서 ..
[Java] 표준 예외를 사용하자
·
Language/Java
Effective Java의 72번째 항목으로 Exception, RuntimeException, Throwable, Error를 직접 재사용하지 말자는 내용이다. 이 예외들은 다른 예외들을 포괄하는 클래스이므로 안정적으로 테스트할 수 없다. 예외 처리 코드가 실제로 잡아야 할 구체적인 예외가 아닌 다른 예외도 함께 잡을 수 있기 때문이다.class Calculator { public static int add(final String text) { if (!StringUtils.hasText(text)) { throw new RuntimeException("Input text cannot be null or empty"); } // do so..
[JPA] Batch Insert
·
Spring Framework/JPA
Spring Boot, Spring Data JPA, PostgreSQL 환경에서 대량 데이터를 삽입할 때 사용할 수 있는 여러 방법의 성능을 비교개별 엔티티 저장(Repository.save())엔티티 컬렉션 저장(Repository.saveAll())JDBC 템플릿을 활용한 배치 삽입 (batchInsert())PostgreSQL JDBC 드라이버의 reWriteBatchedInserts 옵션과 배치 크기의 영향엔티티와 데이터를 저장하는 메서드는 다음과 같다. ID 생성 전략을 IDENTITY로 설정하면 batch 옵션이 동작하지 않으므로 주의해야 한다.@Entity@SequenceGenerator( name = "issued_coupon_code_gen", sequenceN..
[Java] 동등성, 동일성
·
Language/Java
자바에서 객체를 비교할 때 혼동되기 쉬운 두 가지 개념 : 동등성(Equality)과 동일성(Identity)동등성(Equality)동등성은 두 객체가 논리적으로 동일한 값을 가지고 있는지를 비교primitive type : 값 자체를 비교reference type : 객체의 내부 상태(속성 값)를 비교동일성(Identity)동일성은 두 참조 변수가 메모리 상에서 정확히 같은 객체를 가리키는지를 비교두 변수가 힙 메모리에서 동일한 주소를 참조하는지를 비교하는 것equals()와 == 연산자== 연산자primitive type에 사용: 값 자체를 비교(동등성)reference type에 사용: 두 참조 변수가 같은 메모리 주소를 가리키는지 비교(동일성)@Testvoid comparePrimitive() {..
[Java] Enum 비교를 equals() 로 하지않고 == 로 해야 하는 이유
·
Language/Java
Java에서 Enum(열거형)은 관련된 상수들의 집합을 정의하는 특별한 데이터 타입이다. 타입 안전성을 보장하며, 코드의 가독성을 높여주는 장점이 있다.void foo1(String direction) { // direction에는 무슨 값이 들어갈지 모른다. if (direction == "????") { // ... }}// 열거형을 정의하면,enum Direction { NORTH, SOUTH, EAST, WEST}void foo1(Direction direction) { // 어떤 값이 올지 예측할 수 있다.}위의 예시처럼 Enum을 사용할 때 가장 기본적인 연산 중 하나는 두 Enum간 비교하는 것이다. 자바에서는 비교를 위한 equals() 메서드와 ==..
[Java] Exception
·
Language/Java
예외란?프로그램 실행 중 발생할 수 있는 비정상적인 상황을 나타내며, 이를 처리하기 위한 메커니즘자바에서는 예외를 Throwable 클래스와 그 하위 클래스(Exception, Error)로 표현Error: 시스템 수준에서 복구할 수 없는 문제(JVM 내부 오류 등)Exception: 애플리케이션 수준에서 복구 가능한 문제Unchecked Exception : RuntimeException과 그 하위 클래스Checked Exception :Exception 을 상속하지만 RuntimeException의 하위 클래스가 아닌 예외들예외 처리의 개념은 자바 이전에도 존재했지만, 자바는 이를 더 정형화하고 언어 차원에서 강력하게 지원한다. 자바의 Checked Exception은 개발자가 예외 처리를 강제함으로..