나도 그냥 구글링해서 찾아본 바로는 단순히 데이터를 가져오는 메서드에 @Transaction(readOnly=true) 옵션을 주면최적화가 된다고 들었다. 근데 왜 최적화가 되는지 그리고 어떻게 최적화가 되는지 궁금해서 찾아봤다. 먼저 단계별로 장점들이 있다.데이터베이스 레이어일부 데이터베이스에서는 읽기전용 트랜잭션이 가벼운 잠금을 하기때문에 데이터베이스에 부하가 가지 않는다.JDBC 레이어가져온 데이터들을 내부적으로 캐싱하기 때문에 추후 중복된 데이터를 가져올때 데이터베이스에 중복된 쿼리를 날리는 것을 방지할수 있다.ORM 레이어가져온 데이터에 변경이 일어나는지에 대한 변경체크(dirty checking)을 하는데 이건 아무래도 스프링 내부에서 계속 주시해야되기 때문에 readOnly=true 상태라면..
보호되어 있는 글입니다.
참조:https://velog.io/@modsiw/JPAJava-Persistence-API%EC%9D%98-%EA%B0%9C%EB%85%90 JPA(Java Persistence API)의 개념 자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는 API이다. 스프링에서 제공하는것이 아니다.자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스다.여기서 중 velog.io JPA(Java Persistence API) 자바 ORM 기술에 대한 표준 명세로, 자바에서 제공하는 API이다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. JPA는 특정 기능을 하는 라이브러리가 아니라 스프링의 *PSA에 의해서 표준 인터페이스를 정해두었는데 그 ..
참조:https://velog.io/@max9106/Spring-AOP%EB%9E%80-93k5zjsm95 AOP란 Aspect Oriented Programming의 약자로 흩어진 Aspect들을 모아서 모듈화 하는 기법이다. 서로 다른 클래스더라도 비슷한 기능을 하는 부분(비슷한 메서드,비슷한 코드)들이 있을 것이다. 이 부분을 Concern이라고 한다. 이때 만약 노란색 기능을 수정해야한다면, 각각 클래스의 노란색 기능을 수정해줘야 하기 때문에 유지보수면에서는 안좋다.그래서 해결방법은 AOP이다. 흩어진 기능들을 모을 때 사용하는 것이 Aspect이다.각각 Concern 별로 Aspect를 만들어주고 어느 클래스에서 사용하는지 입력해주는 방식이다. 아래의 그림은 Aspect로 모듈화 한 것을 보여주..
참조:https://leveloper.tistory.com/33 IoC(Inversion Of Control) IoC란 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성하게 하여 가독성 및 코드의 중복,유지보수를 편하게 할 수 있게 한다. 의존성 주입(Dependency Injection) DI란 의존성을 주입한다는 말그대로 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주빙을 시켜주는 방식이다. 일반적으로 의존성에 대한 제어권은 객체 자기 자신이 갖는다.간단히 말하자면 new 키워드로 객체를 생성한다. class Sample{ private Apple apple = new Apple(); } 아래는 SampleTest라는 클래스에서 Apple 객체를 생성한 뒤 Sample ..
참조:https://velog.io/@wlsdud2194/what-is-di [DI] Dependency Injection이란 무엇일까? Dependency Injection, 의존성 주입이 무엇이고 어떤 이점이 있는지 예시를 통해 정리한 글입니다. velog.io IoC(Inversion Of Control) 스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다. 즉 개발자에서->프레임워크로 제어의 객체 관리의 권한이 넘어 갔음으로 "제어의 역전"이라고 한다. DI(Dependency Injection) 문제점 개발을 하다보면 코드에 의존성이 생기기 마련이다.그럼 의존성은 무엇이고,왜 생겨나는 것일까? class Programm..
참조:https://velog.io/@taeha7b/api-restapi-restfulapi API, REST API, RESTful API 개념정리 API, REST API, RESTful API 말은 많이 들었는데 무엇인지 모르는 분들, 추상적으로 '이거겠지' 하고 이해하는 정도(제가 여기 포함입니다😥)에서 멈춘분들을 위해서 작성했습니다 velog.io API(Application Programming Interface) 제가 자취방에서 남동생이랑 같이 살고 있는데,요즘 날씨가 너무 더워서 외출하고 자취방에 들어오면 에어컨을 틀고 찬물로 샤워하러 가는것이 귀가 후에 제가 가장 먼저 하는 일입니다. 그런데 이때 에어컨을 가동하기 위해서 리모컨을 이용해서 에어컨을 구동시키는데 만약에 에어컨한테 말로 '에..
참조:https://velog.io/@max9106/Java-%EC%A0%84%EB%9E%B5%ED%8C%A8%ED%84%B4strategy-pattern [Java] 전략패턴(strategy pattern) 디자인 패턴의 꽃이라고 불릴만큼 많이, 다양하게 사용하는 패턴이다.알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 즉 기존 코드의 변경 없이도 실제 로직을 바꿀 velog.io 본 패턴은 가장 많이 사용하는 패턴 중에 하나이다. 전략 패턴이란? 디자인 패턴의 꽃이라고 불릴만큼 많이,다양하게 사용하는 패턴이다 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 즉 기존 코드의 변경 없이도 실제 로직을 바꿀 수 있게 해주는 패턴이다. public interfa..
파사드패턴이란? 건물의 정면을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미한다. 파사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고 복잡한 소프트웨어를 사용할 수 있게 간단한 인터페이스를 제공해준다. 쉽게 단계를 설명하자면 음료를 준비한다->티비를 킨다->영화를 검색한다->영화를 결제한다->영화를 재생한다 사용자 입장에서는 영화를 보기 위해서는 복잡한 코드를 사용하여 영화를 봐야만 한다. 여기서 퍼사드 객체가 등장하게 되는데 퍼사드는 이런 사용자와 영화를 보기위해 사용하는 서브 클래스들 사이의 간단한 통합 인터페이스를 제공해주는 역할을 하게 된다. Client 입장에서는 Facade..
public class User1 extends Observer{ public User1(String msg){ this.msg = msg; } } 참조:https://coding-factory.tistory.com/710 [Design Pattern] 옵저버 패턴(Observer Pattern)에 대하여 옵저버 패턴(Observer Pattern)이란? 옵저버패턴이란 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 coding-factory.tistory.com 옵저버 패턴이란? 옵저버 패턴이란 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을때 마다 메서드 등을 통해..
