반응형

분류 전체보기 1107

[Spring] @Configuration

🌱 어노테이션(Annotation)이란?Annotation(@)은 사전적 의미로는 주석이라는 뜻이다.자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.즉, 프로그램에게 추가적인 정보를 제공해 주는 메타데이터라고 볼 수 있다.   🌱 스프링의 주요 어노테이션@ComponentScan- 빈으로 등록될 준비를 마친 클래스들을 스캔하여, 빈으로 등록해 주는 어노테이션이다.- @Component, @Service, @Repository, @Controller, @Configuration가 그 대상이 된다.@Component- 개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 어노테이션이다.@Bean- 개발자가 직접 제어가 불가능한..

IT 2025.01.24

[SpringBoot] 단위테스트(Unit Test)와 JUnit

🌱 단위 테스트(Unit Test)란?단위 테스트(Unit Test)란 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다.여기서 모듈은 애플리케이션에서 작동하는 하나의 기능 또는 메서드로 이해할 수 있다. 예를 들어 웹 애플리케이션에서 로그인 메서드에 대한 독립적인 테스트가 1개의 단위 테스트가 될 수 있다. 즉, 단위 테스트는 애플리케이션을 구성하는 하나의 기능, 하나의 함수가 올바르게 동작하는지를 독립적으로 테스트하는 것이다.   🌱 단위 테스트(Unit Test)의 장점새로운 기능 추가 시 수시로 빠르게 테스트할 수 있다.리팩토링 시에 안정성을 확보할 수 있다.테스팅에 대한 시간과 비용을 절감할 수 있다.코드에 대한 문서가 될 수 있다.   🌱 F.I.R.S.T 원칙F.I..

IT 2025.01.24

[SpringBoot] 테스트 개념과 종류

🌱 테스트란?테스트란 개발자가 작성한 코드가 의도된 대로 정확히 작동하는지 검증하는 절차이다.   🌱 테스트 코드를 작성해야 하는 이유개발 과정 중 예상치 못한 문제를 미리 발견할 수 있다.작성한 코드가 의도한 대로 작동하는지 검증할 수 있다.코드 수정이 필요한 상황에서 유연하고 안정적인 대응할 할 수 있게 해 준다.리팩토링 시 기능 구현이 동일하게 되었다는 판단을 내릴 수 있다.문서로서의 역할이 가능하다.   🌱 테스트 종류테스트는 크게 Unit Test(단위 테스트)와 Integration Test(통합 테스트)로 나눌 수 있다.Unit Test(단위 테스트)는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다.여기서 모듈은 애플리케이션에서 작동하는 하나의 기능 또는 메서드..

IT 2025.01.24

[Spring] ORM, JPA, Hibernate, Spring Data JPA 개념

🌱 ORM 이란?ORM이란 Object-Relational Mapping의 약자로, 객체(Object)와 관계형 데이터(Relational data)를 매핑하기 위한 기술이다.과거 관계형 데이터를 조회하기 위하여 사용했던 SQL Mapper와의 차이점을 간략하게 알아보자.SQL Mapper- Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술이다.- SQL 문으로 직접 디비를 조작한다.- DBMS에 종속적이다.- 관련기술 : Mybatis, jdbcTemplateORM- Object와 DB테이블을 매핑하여 데이터를 객체화하는 기술이다.- SQL 문을 직접 작성하지 않아도 메서드로 데이터를 조작할 수 있다. (객체 간 관계를 바탕으로 SQL문을 자동으로 생성한다.)- DBMS에 종속적이지 않..

IT 2025.01.24

[Spring] @Transactional

🌱 트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야 할 일련의 연산을 의미하며, 다음과 같은 4가지 특징(ACID)을 갖는다. 원자성 (Atomicity)- 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 아니면 모두 반영되지 않아야 한다.- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.일관성 (Consistency)- 트랜잭션 처리 전과 처리 후 데이터 모순이 없는 상태를 유지하는 것을 의미한다.- 예를 들어서 티스토리 게시판에 글을 쓰는데 제목의 글자 제한이 255 자라고 하자. 트랜잭션이 일어나면 이러한 조건을 만족해야 하는 것이다. 만약 이를 위..

IT 2025.01.24

[Java] Checked Exception과 Unchecked Exception

☕️ Error와 Exception체크 예외와 언체크 예외를 알아보기 전에 앞서 오류와 예외에 대한 차이를 먼저 알아보도록 하자.자바 프로그래밍에서는 실행 시(runtime) 발생할 수 있는 오류는 크게  'Error'와 'Exception'이 존재한다.Error는 프로그램 코드에 의해서 수습될 수 없는 심각한 오류를 말하며,Exception은 프로그램 코드에 의해서 수습될 수 있는 오류를 뜻한다. 이번 포스팅에서는 Exception을 Checked Exception과 Unchecked Exception으로 분류하여 다뤄볼 예정이다.   ☕️ Checked Exception과 Unchecked Exception위에서 간단하게 살펴본 상속관계를 조금 더 구체적인 그림으로 알아보자.Error와 Runtime..

IT 2025.01.22

[Java] java.time 패키지

☕️ java.time 패키지java.time 패키지는 자바8 버전에서 공개된 패키지로 날짜와 시간을 표현하는 클래스를 제공한다.   ☕️ java.time 패키지 사용 이유기존 날짜와 시간을 위해 사용하던 클래스인 Calendar와 Date 클래스 다양한 문제점이 존재하였다.불변객체가 아니다- 변하기 쉬운(mutable) 클래스이기 때문에 스레드 안전( thread safe ) 하지 않다.헷갈리는 월 지정- Calendar 월의 상수값은 0부터 시작이기 때문에 2023.09.01로 셋팅을 하고 싶다면, 'cal.set(2023, 8, 1);' 과 같은 형태로 사용해야 한다.일관성 없는 요일 상수- Calendar의 일요일은 상수값 1을, Date의 일요일은 상수값 0을 가진다.오류에 둔감한 TimeZo..

IT 2025.01.22

[Java] Optional

☕️ Optional이란?Optional은 NULL이 올 수 있는 값을 감싸는 Wrapper 클래스로, Java 8에서 추가되었으며 NULL을 보다 편리하게 핸들링하여 NPE을 발생하지 않도록 도와준다.  ☕️ Optional 생성Optional은 아래와 같은 방법으로 생성할 수 있다.Optional.of(T value)- value를 Optional로 감싼 객체를 생성한다. 이때 주의할 점은 만약 value가 null이라면 NPE가 발생한다.Optional.ofNullable(T value)- value를 Optional로 감싼 객체를 생성한다. Optional.of()와의 차이점은 value가 null이라도 NPE가 발생하지 않는다.Optional.empty()- 빈 객체를 생성한다.import ja..

IT 2025.01.22

[Java] 스트림 API(Stream API)

☕️ 스트림 API(Stream API) 란?Stream API는 Java 8에서 추가된 기능으로써 배열 또는 컬렉션 등을 함수형 프로그래밍 기법으로 처리할 수 있도록 도와주는 API이다.   ☕️ 스트림 API(Stream API)의 특징원본 데이터를 변경하지 않는다.원본 데이터를 토대로 Stream을 생성하고 가공하기 때문에 정렬, 필터링 등의 가공이 있어도 원본 데이터는 훼손되지 않는다.컬렉션과 달리 재사용이 불가하여 단 1번만 사용할 수 있다.Stream의 연산이 모두 끝나면 재사용이 불가능하다. 만일 재사용을 하게 될 경우, IllegalStateException이 발생하게 된다. 그러므로 Stream 연산이 다시 필요한 경우에는 Stream을 새로 생성해줘야 한다.내부 반복을 통해 작업을 처리..

IT 2025.01.22

[Java] 진법 변환(10진수 <-> N진수)

🔐 10진수 -> N진수10진수를 N진수로 변경하고 싶을 때는 java.lang패키지의 Integer클래스를 사용하면 된다.Integer클래스의 toString()를 통해서 10진수를 N진수로 변환 가능하다.public class DecimalConversion { public static void main(String[] args) { // 10진수 -> N진수 변환 int num = 11; System.out.println("10진수 -> 2진수 : " + Integer.toBinaryString(num)); // 1011 System.out.println("10진수 -> 2진수 : " + Integer.toString(num,2)); // 1..

IT 2025.01.22
반응형