스터디
-
Try with Resources / Try Finally스터디 2024. 6. 10. 01:44
도입최근 이펙티브 자바 책을 읽으며, 객체 생성과 파괴 파트에서 try-with-resources 관련 내용을 볼 수 있었다. 저자는 try-finally 보다는 try-with-resources를 사용을 권장한다.InputStream, OutputStream, java.sql.Connection 등 close 메서드를 직접 닫아줘야하는 자원에 대해서 이러한 내용을 제시하였다.저자는 다양한 자원들이 finalizer, cleaner를 안전망으로 활용하고 있으나, 이에 대한 문제점을 제기한다.닫아야할 자원이 여러 개인 경우 try-finally는 중첩으로 인해 지저분한 구조를 갖게 된다.finally 블록에서도 예외가 발생할 수 있으므로 finally 블록에서 발생한 예외가 다른 예외를 삼켜버려 close..
-
Spring Annotation 의 내부구조 동작원리스터디 2024. 6. 9. 03:44
Spring Annotation 이란 ?Annotation은 Java 5부터 추가된 문법 요소로, 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술Annotation 의 용도컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공실행시(런타임시)특정 기능을 실행하도록 정보를 제공 → 이걸 젤 많이 사용함Myannotation interfacepackage myannotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import ..
-
JAVA 병렬 프로그래밍스터디 2024. 6. 9. 03:40
Spring Webflux란?Spring Webflux는 리액티브 웹 애플리케이션 구현을 위해 Spring 5.0부터 지원되는 Reactive Web Framework이다.Event-Driven 방식Async Non-Blocking즉, 이벤트 루프가 돌아서 요청이 발생할 경우, 그것에 맞는 핸들러에게 처리를 위임하고 처리가 완료되면 callback 메소드 등을 통해 응답을 반환 받는다.이 방식의 경우 요청이 처리될 때까지 기다리지 않기 때문에 Spring MVC에 비해 사용자의 요청을 대량으로 받아낼 수 있다는 장점이 있다.(CPU, Thread, Memory에 자원을 낭비하지 않고 효율적으로 동작, 서비스 간 호출이 많은 마이크로 서비스 아키텍처에 적합하다.)Spring Webflux 탄생 배경Spri..
-
Spring Transactional 뜯어보기스터디 2024. 5. 15. 19:16
Transaction 이란 ?데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위데이터베이스의 상태를 변경시킨다는 말 은 SELECT, UPDATE, INSERT, DELETE 와 같은 행동을 뜻한다.Transaction의 특징원자성(Atomicity)원자성은 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나를 뜻한다.일관성(Consistency)일관성은 트랜잭션 작업 처리의 결과가 항상 일관되어야 한다를 뜻한다.데이터 타입이 변경 전후가 같아야 한다독립성(Isolation)어떤 하나의 트랙잭션의 다른 트랙젹션의 연산에 끼어들 수 없다지속성트랙잭션이 완료된 후에, 결과가 데이터베이스에 영구적으로 반영되어야 한다Commit과 RollbackCommit이란 하나의 트랜잭션이 성공적으로 끝났고, ..
-
Spring Tomcat 분석스터디 2024. 5. 1. 17:54
Tomcat이란 ?Servlet Container 를 통해 Servlet을 제공하는 WAS (Web Application Server)이다.서블릿 처리, 서블릿의 수명 주기 관리, 요청 URL을 서블릿 코드로 매핑, HTTP 요청 수신 및 응답, 필터 체인 관리 등을 처리를 한다Servlet Container란 ?Servlet Container란 Servlet의 creation / execution / destruction을 관리하는 container이다.그럼 Servlet은 ??Servlet이란 WAS위에서 동작하는 JAVA 객체(클래스)이다. Servlet 동작과정사용자 요청이 들어옴HTTP요청을 처리하기 위핸 Request, Response 생성web.xml을 바탕으로 어떤 Servlet에 대한 요..
-
SQL Query 최적화 (Spring JPA, Go gorm)스터디 2024. 3. 15. 23:34
일반적으로 서버와 DB에서 Query를 만들때 성능적으로 가장 신경써야할 부분은 조회이다 왜 ? 가장 많이 사용될 뿐더러, 일반적으로 가장 많은 데이터들을 scan하고 fetch하기 때문이다 그렇다면 ? Query 성능 최적화를 하기 위해서는 select 쿼리를 신경쓰는것이 중요하다.특히 OneToMany, ManyToMany, ManyToOne 과 같은 연관관계가 존재하는 Table일 경우에 최적화의 중요성은 강조된다. SpringSpring JPA에서는 '지연로딩'과 '즉시로딩' 이라는 방법이 존재한다. @Data static class OrderDto { private Long orderId; private String name; private Loc..
-
Spring JPA스터디 2024. 1. 24. 18:55
Spring에서는 JPA를 사용해서 데이터베이스 query를 쉽게 처리할 수 있다. 그렇다면 JPA란 무엇일까? JPA를 알기전에 ORM에 대해서 알고 갈 필요가 있다. 웹 서비스는 데이터를 처리할 때 대부분 데이터베이스를 사용한다.그런데 데이터베이스를 사용하려면 SQL 쿼리(query)라는 구조화된 질의를 작성하고 실행하는 등의 복잡한 과정이필요하다. 이때 ORM(object relational mapping)을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다. 즉, ORM을 이용하면 개발자가 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터를 처리할 수 있다. JPA란 ? 스프링부트는 JPA(Java Persistence API)를 사용하여 데이터베이스를 처리한다. JPA는 자바 진영..
-
Spring - Annotation 정리스터디 2023. 12. 1. 21:16
Spring에는 다양한 Annotation들이 존재한다. Annotation들을 통해서 개발자들은 개발속도를 향상시킬 수 있는 것은 분명하다고 생각한다. 하지만, Spring을 처음 써보는 입장에서 Annotations을 정리를 해야 추후에 개발을 할 때도 수월할 것 같아서 기본적으로 많이 사용되는 Annotations들을 정리하려고 한다. package com.example.restfulwebservice.bean;import com.fasterxml.jackson.annotation.JsonIgnore;import io.swagger.v3.oas.annotations.media.Schema;import jakarta.persistence.*;import jakarta.validation.const..