728x90

스프링 28

Spring Data & JPA & Hibernate 차이점

Spring Data JPA Spring Data JPA는 Spring Framework에서 제공하는 모듈 중 하나로, 개발자가 JPA를 좀 더 쉽고 편하게 사용 할 수 있도록 도와준다. 특징을 잠깐 살펴보자면, Hibernate와 같은 구현체들을 좀 더 쉽게 사용할 수 있도록 추상화한 것. JPA를 한 단계 추상화시킨 Repository 인터페이스를 제공. 개발자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록. Hibernate와 Spring Data JPA를 사용하는 데에는 사실 큰 차이가 없지만 Spring Data JPA가 권장되는 이유는 크게 두 가지. 구현체 교체의 용이성 ..

[Java] 디스패치 서블릿 DispatcherServlet이란?

Dispatcher-Servlet(디스패처 서블릿) 이란? 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그렇기 때문에 Dispatcher-Servlet은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다. 이 과정을 이해하기전에 앞서 클라이언트로부터 어떠한 요청이 들어오게되면 톰캣과 같은 서블릿 컨테이너가 요청을 받게 된다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패치 서블릿이 가장 먼저 받게 된다. 그러면 디스패치 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야하는 컨트롤러를 찾아서 작업을 위임하게 된다. 여기서 프론트 컨트롤러는 주로 서블릿 컨테이너의 ..

JAVA 2022.04.11

[Java] enum의 개념과 사용법

Enum Class란? 열거형이라고 부르며, 서로 연관된 상수들의 집합을 의미한다. 기존에 상수를 정의할때는 final static String과 같은 문자열이나 숫자로 나타냈었는데, enum을 사용하면 보다 코드의 가독성을 높힐 수 있다. 그렇다면 enum을 쓰게 되면 우리가 얻을 수 있는건 무엇일까? 1. 코드가 단순해지고, 가독성이 좋아진다. 2. 인스턴스의 생성과 상속을 방지하여 상수값의 안정성이 보장된다. 3. enum을 이용해 새로운 상수들의 타입을 정의하므로써 정의한 타입 외의 타입을 가진 데이터값을 캄파일시 체크 할 수 있다. 4. enum이라는 키워드를 통해 구현의 의도를 파악 할 수 있다.(열거) public class Example { //기존에 상수를 정의하는 방법 public st..

JAVA 2021.10.19

[Spring] IoC, DI, 컨테이너

IoC (Inversion of Control) - 제어의 역전 - 프로그램의 제어 흐름을 개발자가 결정하는 것이 아니라, 외부에서 결정을 하는 것. 여기서의 흐름은 메소드나 객체의 호출을 의미. - 객체를 개발자가 Test test = new Test(); 이런식으로 만드는것이 아니라 스프링이 스스로 객체를 생성해서 필요한곳에 사용 할 수 있게 해준다. -> 기존의 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행을 했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다는 말씀. 프로그램의 제어 흐름을 직접적으로 하는 것이 아닌 외부에서 관리하는 것을 우리는 제어의 역전! 이라고 부른다. ※ 프레임워크 vs 라이브러리 - 프레임워크는 내가 작성한 ..

JAVA 2021.10.19

[Java] 입출력 BufferedReader / BufferedWriter

알고리즘 공부하다가 Scanner를 사용하는일이 있었는데, 여러 예제를 찾아보니 BufferedReader와 BufferedWriter가 알고리즘 측면에서 더 효율이 높다는것을 발견했다. 초기 System.out.print할 데이터의 양이 적다면, 큰 차이는 안난다고하는데, 데이터의 양이 커질수록 Scanner와 BufferedReader/BufferedWriter의 차이는 더 발생한다고한다. BufferedReader / BufferedWriter 이름에서도 알 수 있겠지만, 이것은 각각 Reader와 Writer. 입출력을 담당하고 있다. 버퍼를 통해서 입출력을 전달해준다고한다. 그렇다면 왜? BufferedReader / BufferedWriter가 Scanner보다 더 효율이 좋은 이유는 무엇일까..

JAVA 2021.10.03

[백준] 1000번: A+B

https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 백준 1000번 문제. A값과 B값을 더해주기. Scanner와 BufferedReader를 한 번 이용해볼 생각이다. 사칙연산은 의외로 간단하기 때문에 바로 시작 1. Scanner 이용 import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner((System.in)); int a = sc.nextInt(); int b = sc.nextI..

Algorithm 2021.10.02

[Java] Junit 실행순서

[Juni5의 실행순서] 출처 : https://www.softwaretestinghelp.com/junit-annotations-tutorial public class OrderServiceTest { MemberService memberService; OrderService orderService; @BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); orderService = appConfig.orderService(); Test Class를 잘 살펴보면 @BeforeEach 애너테이션이 붙은 beforeEach 메서드가 있다. 이는 Te..

JAVA 2021.07.28

[Java] Class에 대하여

클래스와 인스턴스 우리가 'new MemberRepository()' 와 같은 코드를 작성하면 애플리케이션은 'MemberRepository 클래스'를 참조하여 'MemberRepository 인스턴스'를 만들게 됨. 인스턴스를 만든다는 것은 클래스의 정보를 기반으로 메모리에 새로운 객체를 만든다는 의미. 예를들면, 클래스는 붕어빵 틀에 인스턴스는 붕어빵에 비유 가능. 붕어빵 틀을 이용하여 붕어빵을 만들수 있지만 붕어빵 틀과 붕어빵은 서로 다른것처럼. 클래스는 필드(멤버변수)와 메서드를 가질 수 있음. 그리고 필드와 메서드에는 static 키워드를 붙일 수 있음. static 이 붙은 필드나 메서드는, '인스턴스의 소유'가 아닌, '클래스의 소유'가 됨. 클래스 소유의 뜻 클래스의 소유라는 뜻은, 어떤 ..

JAVA 2021.07.28
728x90