트랜잭션과 무결성
·
Computer Science
트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며 데이터베이스에 접근하는 방법은 쿼리이므로, 즉 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. 이에 대한 특징은 원자성, 일관성, 독립성, 지속성이 있으며 이를 한꺼번에 ACID 특징이라고 한다. 주요 목적은 여러 작업이 포함된 프로세스에서 데이터 무결성을 보장하고, 시스템 장애나 에러 발생 시 일관된 상태로 복원할 수 있게 하는 것이다. 트랜잭션의 주요 특징 (ACID 속성)트랜잭션은 ACID 속성이라고 불리는 네 가지 특징을 가지고 있다. 1. Atomicity (원자성)트랜잭션 내의 모든 작업은 하나의 단위로 간주된다. 따라서 트랜잭션 내의 작업이 모두 성공하든지, 모두 실패하든지 해야 한다. 일부만 성공하거나 실패..
Error 메시지(enum 활용)
·
Spring
자바 스프링에서 에러 메시지를 효과적으로 관리하는 방법은 여러 가지가 있다. 에러 메세지를 사용자에게 제공할 때 일관성을 유지하고, 명확한 피드백을 주며, 보안 및 디버깅을 고려해야 한다. 다음은 자바 스프링에서 에러 메세지를 관리하는 대표적인 방법이다.  1.  Custom Exception 클래스 작성일단, 특정 에러 상황을 처리하기 위한 사용자 정의 예외 클래스를 작성할 수 있다. 예외마다 구체적인 메세지를 포함하여 상황에 맞는 메세지를 제공이 가능하다. 사용자 정의 예외 클래스 ex)public class InvalidRequestException extends RuntimeException { private String message; public InvalidRequestExcept..
Service 테스트 코드, controller 테스트 코드
·
Spring
자바 스프링에서 서비스 테스트와 컨트롤러 테스트는 각각 비즈니스 로직과 웹 계층을 독립적으로 검증하는 중요한 과정이다. 두 테스트는 구조와 목적에 차이가 있지만, 둘 다 애플리케이션의 안정성을 보장하는 데 중요한 역할을 한다. 서비스 테스트(Service Test)서비스 레이어는 비즈니스 로직을 처리하는 계층으로, 데이터베이스와 상호작용하거나 외부 API를 호출하는 등의 중요한 역할을 한다. 이 레이어를 테스트하는 것은 비즈니스 로직이 예상대로 동작하는지 검증하는 데 목적이 있다. 테스트 대상 : 주로 비즈니스 로직, 레포지토리와의 상호작용, 외부 API 통신 등을 담당하는 서비스 클래스. 주요 사용하는 방법에는 단위 테스트(Unit Test)에서 서비스 메서드를 작은 단위로 테스트하며, 주로 의존성을 ..
AOP(Aspect-Oriented Programming)
·
Spring
Aspect-Oriented-Programing(AOP)는 프로그램의 관심가를 분리하여 코드의 모듈성을 높이고, 유지보수를 용이하게 하는 프로그래밍 패러다임이다. 주로 로그, 보안, 트렌잭션 관리 등 공통적인 관심사(cross-cutting concerns)를 처리할 때 사용된다. AOP의 주요 개념주요 개념Aspect:Aspect는 특정 관심사 또는 기능을 모듈화한 것이다. 예를 들어, 로그 기록, 보안 검사, 트랜잭션 관리 등이 Aspect로 정의될 수 있다.Aspect는 일반적으로 @Aspect 어노테이션을 통해 정의된다.Join Point:Join Point는 Aspect가 적용될 수 있는 프로그램의 특정 지점을 말한다.예를 들어, 메소드 호출, 메소드 실행 후, 객체 생성 시점 등이 Join P..
단위 테스트(Unit Testing), JUnit5
·
Spring
단위 테스트(Unit Testing)소프트웨어 개발에서 개별 코드 단위(예: 함수, 메서드, 클래스 등)가 예상대로 작동하는지 검증하는 테스트 방법이다. 이를 통해 개발자는 코드가 작은 단위에서부터 올바르게 작동하는지 확인할 수 있으며, 전체적인 품질을 향상시킨다. 단위 테스트의 주요 특징작은 코드 단위 테스트: 함수나 메서드와 같은 작은 코드 조각을 테스트한다.독립적: 단위 테스트는 다른 코드나 테스트에 의존하지 않아야 하며, 서로 간섭 없이 실행할 수 있어야 한다.빠른 실행: 작은 단위의 코드만을 테스트하므로 빠르게 실행된다.자동화 기능: 대부분의 단위 테스트는 자동화 도구를 사용하여 지속적으로 실행이 가능해야 한다.반복 가능: 테스트는 여러 번 반복적으로 실행할 수 있어야 하며, 동일한 입력에 대해..
Spring Meet-Up 2024.09.10
·
개발자 밋업
아무생각없이 신청했던 인프런 밋업 추첨에 당첨되었다!그래서 바로 월요일날 판교테크노벨리가서 밋업에 참여했다! 그의 유튜브와 깃허브 주소Josh Long 유튜브 채널: http://www.youtube.com/@coffeesoftware Coffee + SoftwareHi there 👋! This is Coffee + Software. We've got a lot of things I want to explore and very little time in which to do it. So, grab a cup of coffee and join us and we'll explore together.www.youtube.com그의 깃허브 : http://github.com/joshlong/bootiful-s..
CPU 스케줄링 알고리즘
·
Computer Science
CPU 스케줄링 알고리즘은 CPU의 작업 처리 순서를 결정하는 방법으로, 여러 프로세스가 CPU를 공유해야 할 때 효율적으로 CPU 자원을 배분하는 데 사용됩니다. 각 알고리즘은 서로 다른 방식으로 CPU를 할당하여, 주로 처리 시간, 우선순위, 대기 시간 등을 고려한다. 그래서 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 CPU 이용률은 높게, 주어진 시간에 많은 일을 하게, 준비 큐(readt queue)에 있는 프로세스느 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다.-개념 참고-https://www.javatpoint.com/cpu-scheduling-algorithms-in-operating-systems CPU Sc..
KPT 회고록+뉴스피드 프로젝트 정리본
·
Spring/미니 프로젝트(뉴스피드)
프로젝트 핵심 코드이번 뉴스피드 프로젝트에서 사용했던 핵심 기능과 그에 따른 장점, 단점,그리고 핵심 코드에 대해 설명해보고 합니다. 크게 JWT 인증, 필터, 커스텀 어노테이션, 파사드 패턴 4가지로 정리할 수 있습니다. 해당 코드를 자세하게 보고 싶다면 해당 깃허브 레포지토리로 오시면 됩니다!https://github.com/TeamSparta19/minsutagram GitHub - TeamSparta19/minsutagram: A code repository designed to show the best GitHub has to offer.A code repository designed to show the best GitHub has to offer. - TeamSparta19/minsutagr..
커스텀 어노테이션
·
Spring
커스텀 어노테이션을 정의하려면 @interface 키워드를 사용하여 새로운 어노테이션 타입을 생성한다. 어노테이션에는 주로 @Target과 @Retenttion 어노테이션을 사용하여 적용 대상과 유지 정책을 설정한다. 커스텀 어노테이션 정의하는 예로 @LoginUser라는 어노테이션을 예로 들겠다.@LoginUser 어노테이션은 메소드 파라미터에 적용되어 로그인된 사용자 정보를 주입하는 데 사용된다. 이 어노테이션은 런타임 동안 유지되며, 메소드 파라미터에만 적용될 수 있도록 설정한다. package com.sparta.newsfeed19.global.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retenti..
Could not write JSON
·
Spring/Spring 트러블 슈팅
유저 등록을 한 후 로그인을 받고 토큰을 받은걸 AUthorization에 토큰값을 넣어준 뒤 로그인 된 유저 정보 바탕으로 단건 다건 조회가 된다. 근데 post에서 request 정보 넣고 send를 했지만 해당 메세지가 뜬다. Could not write JSON: failed to lazily initialize a collection of role: com.sparta.newsfeed19.user.User.followerList: could not initialize proxy - no Session "이 에러 메시지는 Hibernate와 관련된 Lazy Loading 문제로, Session이 없는 상태에서 지연 로딩(Lazy Loading)된 엔티티를 초기화하려고 할 때 발생합니다. 구체적으로..