반응형

Java 37

AOP

1️⃣ AOP란?핵심 비즈니스 로직과 횡단 관심사(Cross-Cutting Concerns) 를 분리하여 모듈화하는 프로그래밍 패러다임(개념)횡단 관심사 예시: 로깅, 보안, 트랜잭션, 캐싱, 예외 처리목적: 코드 중복 제거, 관심사 분리, 유지보수성 향상2️⃣ AOP 주요 용어용어설명Aspect횡단 관심사를 모듈화한 단위Advice실제 실행되는 동작 (@Before, @After, @Around 등)Join PointAdvice가 적용될 수 있는 지점PointcutAdvice를 적용할 Join Point를 선별하는 표현식WeavingAspect를 실제 코드에 적용하는 과정3️⃣ AOP의 구현체들AOP (개념/패러다임)├── AspectJ ← 가장 완전한 구현체├── Spring AOP ..

Spring 2020.04.18

@Transactional

1️⃣ @Transactional 기본 개념Spring에서 데이터베이스 트랜잭션을 자동 관리하는 어노테이션AOP 프록시 방식으로 동작 → 메서드 호출 전/후로 트랜잭션 시작/커밋/롤백 처리2️⃣ 주요 속성속성설명propagation트랜잭션 전파 방식 (기본값: REQUIRED)isolation격리 수준 설정readOnly읽기 전용 최적화timeout타임아웃 설정rollbackFor롤백할 예외 지정noRollbackFor롤백 제외 예외 지정3️⃣ 전파(Propagation) 옵션옵션설명REQUIRED기존 트랜잭션 참여, 없으면 새로 생성 (기본값)REQUIRES_NEW항상 새 트랜잭션 생성, 기존 것은 일시 중단NESTED기존 트랜잭션 안에 중첩 트랜잭션 생성SUPPORTS트랜잭션 있으면 참여, 없어도 실..

Spring 2020.04.17

.map()과 .flatMap()의 차이

1. Stream에서의 차이.map()각 요소를 1:1 변환합니다.List names = List.of("hello", "world");List result = names.stream() .map(s -> s.split("")) // 각 String → String[] 로 변환 .collect(Collectors.toList());// 결과: [["h","e","l","l","o"], ["w","o","r","l","d"]]// → Stream : 중첩 구조 유지.flatMap()각 요소를 변환한 뒤, 내부 Stream을 하나로 병합(flatten) 합니다.List names = List.of("hello", "world");List result = names.stream() .fla..

Java 2020.04.10

Jar & War

JAR & WAR 완벽 정리Java 진영에서 자주 쓰이는 두 가지 패키징(배포) 형식인 JAR와 WAR에 대해 정리합니다.📌 들어가며Java 애플리케이션을 배포할 때 자주 마주치는 .jar와 .war 파일.둘 다 내부적으로는 ZIP 압축 파일이지만, 용도와 실행 방식이 다릅니다.이 글에서는 두 형식의 차이점과 WAR를 실행하는 WAS 종류까지 정리해보겠습니다.📦 JAR (Java ARchive)개요확장자: .jar정식 명칭: Java Archive용도: 일반적인 Java 애플리케이션 / 라이브러리 배포포함 내용.class 파일 (컴파일된 자바 클래스)메타데이터 (META-INF/MANIFEST.MF)리소스 파일 (이미지, 설정 파일 등)실행 방법java -jar myapp.jar특징독립 실행형 애플리..

빌드 도구 2020.04.03

Java Logging

1. Java Logging 개요Java Logging은 애플리케이션의 실행 이벤트, 오류, 디버깅 정보를 기록하는 메커니즘입니다.✅ 문제 진단 : 운영 중 발생한 오류 추적✅ 모니터링 : 시스템 상태 실시간 파악✅ 감사(Audit) : 보안 이벤트 및 사용자 행동 기록2. 주요 로깅 프레임워크프레임워크역할특징java.util.logging (JUL)구현체JDK 기본 제공, 별도 의존성 없음Log4j 2구현체고성능, 비동기 로깅 지원Logback구현체SLF4J 네이티브 구현체, Spring Boot 기본SLF4J추상화(Facade)인터페이스만 제공, 직접 출력 불가3. 로그 레벨 상세 설명로그 레벨은 메시지의 중요도를 나타내며, 설정된 레벨 이상의 로그만 출력됩니다.예) 레벨을 INFO로 설정 → INF..

Java 2020.04.03

Wrapper Class

Java Wrapper Class (래퍼 클래스)Java의 Wrapper Class는 기본형(primitive type) 데이터를 객체(Object)로 감싸는 클래스입니다. java.lang 패키지에 포함되어 있습니다.기본형 ↔ Wrapper Class 대응표기본형 (Primitive)Wrapper ClassbyteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean왜 필요한가?1. 컬렉션(Collection) 사용ArrayList, HashMap 등 제네릭 컬렉션은 객체만 저장할 수 있습니다.// 기본형 int는 직접 넣을 수 없음 → Integer 사용List list = new ArrayList();2. n..

Java 2020.03.28

MyBatis

1. MyBatis란?MyBatis는 자바(Java) 기반의 SQL 매핑 프레임워크입니다.개발자가 SQL을 직접 작성하면서, 그 결과를 자바 객체에 자동으로 매핑해주는 퍼시스턴스(Persistence) 프레임워크입니다.JPA/Hibernate와 달리 SQL 중심의 접근 방식을 취하며, XML 또는 어노테이션으로 SQL을 정의하고 , 등의 태그를 활용한 동적 SQL을 지원합니다.복잡한 쿼리가 많거나 SQL 튜닝이 중요한 환경에 적합합니다.핵심 특징SQL을 직접 작성하여 세밀한 제어 가능XML 또는 어노테이션 기반 SQL 매핑SQL 결과를 자바 객체(POJO)에 자동 매핑동적 SQL 지원설정이 간단하고 학습 곡선이 낮음MyBatis vs JPA/Hibernate항목MyBatisJPA/HibernateSQL..

데이터베이스 2020.03.26
반응형