본문 바로가기

Spring Framework

(11)
QueryDSL 바로 알기 0. 목차 왜 ORM인가? Spring ORM 기술 QueryDsl 잘. 쓰기 정리 1. 왜 ORM인가? ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스 간의 설정을 의미합니다. ORM은 서버에서 반드시 필요한 데이터베이스 작업 요청의 인터페이스 역할을 담당합니다. 예를 들어 사용자(User)를 조회하는 DB작업이 필요하다면 네이티브 쿼리를 사용하는 경우는 다음 코드를 작성할 것이라고 예상할 수 있습니다. SELECT * FROM users WHERE username = [username] ORM이 등장하기 이전에는 코드에 DB 종속적인 sql 쿼리가 작성되는 것이 일반적이었고 Spring의 경우도 Mybatis를 써서 코드를 설계하는 경우가 많았습니다. 그럼 만약 현..
[Spring] spring에 mybatis 적용하기 이번 글은 spring에 mybatis를 적용하는 방법에 대해 정리해보려고 합니다. 먼저 mybatis는 무엇이고 어떤 역할을 하는지 알아보겠습니다. Mybatis란? Mybatis는 자바에서 JDBC를 통해 DB에 접근하여 SQL 쿼리를 수행할 수 있도록 지원하는 개발 프레임워크입니다. 제가 JDBC를 위해 자바에서 사용할 수 있는 JPA보다 Mybatis를 좋아하는 이유는 Mybatis장점 때문입니다. Mybatis의 장점 복잡한 SQL 쿼리를 수행하는데 유리하다. 자바와 SQL 쿼리를 분리할 수 있다. 제가 강조하고 싶은 장점은 첫 번째 복잡한 SQL 쿼리를 수행하는데 장점이 있다는 점입니다. 이렇게 복잡한 쿼리가 있다고 했을 때 JPA로 작성하는 것은 힘든 작업 일 수 있습니다. (왜 힘든지에 대..
[Spring] PSA(Portable Service Abstraction) 이번 글에서는 스프링의 핵심 기술 IoC/DI, AOP와 더불어 PSA에 대해 정리해보려고 합니다. (본 글은 토비의 스프링 3.1의 내용을 제가 이해한 방식으로 정리한 글입니다.) PSA란 Portable Service Abstraction의 약자로 서비스 추상화라고 부릅니다. 추상화라는 단어에 대해 좀 더 깊이 들어가 보겠습니다. 자바에서는 표준 스펙, 사용 제품, 오픈 소스를 통틀어서 사용 방법과 형식은 다르지만 기능과 목적이 유사한 기술이 존재합니다. 예를 들어 DB에 접근하기 위해 Jdbc, Hibernate, Mybatis, JPA 등 DB Connection을 생성하고 SQL문을 실행하고 결괏값을 받는 등 DB와 관련된 로직을 처리한다는 점에서 기능과 목적은 동일하지만 사용하기 위한 방법은 ..
[Spring] 예외를 처리하는 방법 이번 글에서는 예외를 처리하는 방법에 대해 정리해 보려고 합니다. (본 글은 "토비의 스프링 3.1" 책을 읽고 책의 내용과 제 생각을 더해서 쓴 글입니다) 예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보해야 합니다. 앞으로는 이 두 가지의 핵심 원칙을 지켜 자바에서 예외처리를 하기 위한 효과적인 방법에 대해 정리해보려고 합니다. 1. 자바에서 throw를 통해 발생시킬 수 있는 예외 2. 예외를 처리하는 일반적인 방법과 효과적인 방법 3. 일괄된 예외처리 전략 1. 자바에서 throw를 통해 발생시킬 수 있는 예외 자바에서 throw 키워드는 만약 어떤 연산을 하다가 예상치 못한 일이 발생했을 때 Except..
[Spring] JdbcTemplate 이번글은 Spring 프레임워크의 JdbcTemplate에 대해 알아 보려고 합니다. JdbcTemplate를 사용하는 목적과 사용방법에 대해 자세히 알아보겠습니다. 1. 변하는 것과 변하지 않는것 이전에 다뤘던 IoC/DI는 모듈간의 의존관계가 있을 때 스프링 컨테이너가 의존관계를 주입하는 방식이었습니다. 모듈간의 응집도는 높이고 다른 모듈간의 결합도는 낮추면서, 변화가 발생했을 때 하나의 모듈 내에서 집중되도록 하는 것이 중요한 목적이었습니다. 아래의 글은 IoC/DI에 대해 정리한 글이니 참고부탁드립니다! [Spring] IoC/DI 컨테이너 이번 글은 스프링의 IoC/DI 개념에 대해 학습하고 정리하는 글을 적어보려고 합니다. 글의 전개 방향은 간단한 예제를 반복적인 리팩터링을 거치면서 IoC/D..
[Spring] TDD란? 이번 글에서는 TDD에 대해 정리해보려고 합니다. 그리고 TDD의 매력에 눈을 뜬 저처럼 이 글을 읽는 모든 분들이 TDD 매력에 대해 느낄 수 있도록 노력해 보겠습니다! 제가 TDD에 매력을 느낀 이유는 실수의 빈도를 줄이고 빠르게 버그를 수정할 수 있다는 점이었습니다. 또한 테스트의 편의성을 높일 수 있다는 점도 TDD의 매력이었습니다. 저는 TDD 방식을 알기 전에 여러 웹 사이트를 개발하면서 사용자의 정보를 DB에 저장하는 간단한 테스트를 하기 위해서는 다음의 과정을 거쳐야 했습니다. 1. DAO를 만든 뒤 바로 테스트하지 않고 서비스 계층, MVC, 프레젠테이션 계층까지 포함한 모든 입출력 기능을 대충이라도 코드로 다 만든다. 2. 테스트용 웹 애플리케이션을 서버에 배치한다. 3. 웹 화면을 띄..
[Spring] IoC/DI 컨테이너 이번 글은 스프링의 IoC/DI 개념에 대해 학습하고 정리하는 글을 적어보려고 합니다. 글의 전개 방향은 간단한 예제를 반복적인 리팩터링을 거치면서 IoC/DI의 의미와 중요성을 체감할 수 있도록 작성해 보도록 노력해 보겠습니다. (이 글은 토비의 스프링 3.1 Vol.1 스프링의 이해와 원리 책의 내용을 기반하여 작성했습니다. 더 자세한 내용에 대해 궁금하신 분들은 책을 구입하시는 것을 추천드립니다!) 목차 1. 예제 설명 2. 관심사의 분리 과정 3. 제어의 역전(IoC)과 스프링의 IoC 4. 의존 관계 주입(DI) 1. 예제 설명 이번 글에서 사용할 예제는 "사용자의 정보를 넣고 관리할 수 있는 기능을 관리" 하는 상황입니다. 코드를 통해 간단하게 소개하자면 다음과 같습니다. 해당 예시에서는 사용..
[Spring] Gradle vs Maven 이번 글은 기존에 Maven 프로젝트를 Gradle로 전환하기 전 Gradle로 전환하려는 이유에 대해 작성한 글이다. 왜 Gradle인가? Maven과 Gradle 모두 빌드 도구(Build Tool) 중 하나로 프로젝트 생성, 테스트 빌드, 베포 등의 작업을 위한 프로그램입니다. 여기서 중요한 점은 왜 Gradle로 전환인가? 입니다. Gradle은 크게 3가지 측면에서 장점이 있습니다. 1. 유연성 먼저 "유연성"이라는 것이 추상적이기에 프로그래밍에서 유연성에 대해 간단히 설명하자면, 유지보수의 용이성을 갖춘 소프트웨어는 기존의 코드를 최대한 건드리지 않고 모듈의 동작을 확장할 수 있게 되며 기술의 변화에 기민하게 반응합니다. 즉, 유연한 소프트웨어라는 것은 애플리케이션의 비즈니스 로직을 여러 가지..

반응형