전체글114 @Transactional을 사용할때 어떤 점을 주의할까? 목차개요주의사항1 - 프록시 내부 호출주의사항2 - public 메서드만 트랜잭션 적용주의사항3 - 초기화 시점결론1. 개요보통 트랜잭션을 걸고 싶을때 간단하게 @Transactional 키워드를 자주 사용한다. 이 키워드를 사용하면 스프링의 트랜잭션 AOP가 적용된다.트랜잭션을 적용하다가 많은 개발자들이 이 문제를 실수 하는 경우가 많은데 아래 내용을 천천히 살펴보자.2. 주의사항1 - 프록시 내부 호출 @Transactional 을 적용하면 프록시 객체가 요청을 먼저 받아서 트랜잭션을 처리하고, 실제 객체를 호출해준다.따라서, 트랜잭션을 적용하려면 항상 프록시를 통해서 대상 객체를 호출해야 한다.AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링 빈으로 등록한다. 따라서 스프링은 의존관꼐 주.. 2024. 7. 11. 자바의 람다식은 왜 등장했을까? 목차개요코드 간결성 및 가독성 향상병렬 처리 및 스트림 API와의 통합함수형 인터페이스와의 연계코드 재사용성 및 유지보수성 향상결론1. 개요자바의 람다식(Lambda Expression)은 함수형 프로그래밍 개념을 도입하여 자바의 생산성을 높이고, 코드의 가독성과 간결성을 개선하기 위해 등장했다. 람다식은 자바 8에서 도입되었다.2. 코드 간결성 및 가독성 향상자바 8 이전에는 익명 내부 클래스(Anonymous Inner Classes)를 사용하여 함수형 프로그래밍을 흉내내는 방식으로 코딩해야 했다. 이는 코드가 장황해지고 가독성이 떨어지는 문제를 초래했다. 람다식을 사용하면 다음과 같은 간결하고 가독성 높은 코드를 작성할 수 있다.ex) 익명 내부 클래스 vs 람다식1) 익명 내부 클래스 사용List.. 2024. 7. 1. 어노테이션을 사용하는 이유와 효과에 대해 알아보자 목차어노테이션이란?어노테이션을 사용하는 이유와 효과나만의 어노테이션 만들기1. 어노테이션이란?어노테이션(Annotation)은 자바 프로그래밍 언어에서 코드에 대한 메타데이터를 제공하는 일종의 표기법이다. 어노테이션은 코드의 메타데이터를 제공하고, 다양한 프레임워크와 도구에서 코드의 행동을 제어하거나 확장하는 데 널리 사용된다.2. 어노테이션을 사용하는 이유와 효과어노테이션은 다양한 목적을 제공하는데 사용하는 이유와 효과는 다음과 같다.코드 가독성 및 유지보수성 향상의미 명확화: 어노테이션을 통해 코드의 의도를 명확하게 표현할 수 있다. 예를 들어, @Deprecated 어노테이션은 특정 메서드가 더 이상 사용되지 않음을 명확히 나타낸다.코드 분리: 반복적인 코드나 부가적인 로직을 어노테이션으로 분리함으.. 2024. 6. 26. 논리적삭제 vs 물리적삭제 논리적삭제 vs 물리적삭제목차개요논리적 삭제(Logical Deletion)물리적 삭제(Physical Deletion)결론1. 개요논리적 삭제(Logical Deletion)와 물리적 삭제(Physical Deletion)는 데이터를 처리하는 방법에 있어서 근본적인 차이를 가진다. 이 두 가지 방법은 주로 데이터베이스 관리나 파일 시스템 관리에서 데이터를 어떻게 삭제할지 결정할 때 사용된다. 각각의 삭제에 대해 장단점을 파악해보자.2. 논리적 삭제(Logical Deletion)논리적 삭제는 데이터를 실제로 데이터베이스나 파일 시스템에서 제거하지 않는 방식이다. 대신, 데이터가 삭제되었다는 표시를 남겨 데이터를 더 이상 사용하지 않도록 한다. 예를 들어, 데이터베이스의 특정 행에 ‘삭제됨’또는 ‘비활성.. 2024. 6. 20. SQL Mapper vs ORM 기술 SQL Mapper vs ORM 기술목차개요SQL MapperORM (Object-Relational Mapping)결론1. 개요SQL Mapper와 ORM(객체 관계 매핑, Object-Relational Mapping) 기술은 데이터베이스와 객체지향 프로그래밍을 연결하는 두 가지 주요 접근 방식입니다. 각각의 특징, 장단점 및 사용 사례를 살펴보려고 한다.2. SQL MapperSQL Mapper는 SQL 쿼리를 사용하여 객체와 데이터베이스 간의 매핑을 처리하는 도구이다.특징직접적인 SQL 제어: 개발자가 직접 SQL 쿼리를 작성하고 이를 통해 데이터베이스와 상호작용한다.유연성: 복잡한 쿼리와 최적화된 SQL을 사용할 수 있어 성능 최적화에 유리하다.매핑 파일: 객체와 SQL 간의 매핑을 정의하는 X.. 2024. 6. 19. 카프카(kafka) 조금 아는척하기 - 3 목차개요컨슈머토픽 파티션은 그룹 단위 할당커밋과 오프셋커밋된 오프셋이 없는 경우컨슈머 설정자동 커밋/수동 커밋재처리와 순서세션 타임아웃, 하트비트, 최대 poll 간격종료 처리주의: 쓰레드 안전하지 않음결론1. 개요지난번에 이어서 이번에는 컨슈머에 대해 알아보려고 한다. 이전에 1편과 2편은 다음과 같다.1편 - https://github.com/Jammini/TIL/blob/master/etc/kafka1.md2편 - https://github.com/Jammini/TIL/blob/master/etc/kafka2.md2. 컨슈머토픽 파티션에서 레코드 조회Properties prop = new Properties();prop.put("bootstrap.servers", "localhost:9092");p.. 2024. 5. 28. 이전 1 2 3 4 5 6 7 ··· 19 다음