본문 바로가기

반응형

Tech

(56)
[SpringBoot] Database 연동 - 3 (JdbcTemplate) 1. JdbcTemplate Spring 에는 Database 를 사용할 수 있는 방법으로 JdbcTemplate 이 있다. 순수 JDBC 에서는 DB Connection 을 얻고 해제하는 등의 DB 작업을 위해 반복되는 코드들이 있다. JdbcTemplate 은 이러한 반복 코드들을 제거할 수 있도록 되어서 사용에 편리하고 자원을 얻고 해제하는 등의 코드를 작성하면서 발생할 수 있는 문제들을 피할 수 있도록 해준다. 물론 SQL 쿼리문은 직접 작성하여야 한다. JdbcTemplate 은 사용할 때 설정은 앞서 JDBC 를 사용하기 위해서 했던 Spring Datasource 등의 설정과 동일하게 수행하면 된다. 2. 구현 JdbcTemplate 으로 구현 시에는 기존의 JDBC 와는 다르게 Connec..
[SpringBoot] Database 연동 - 2 (JDBC) 1. JDBC - JDBC 란? JDBC 는 Java Database Connectivity 의 줄임말로, DB 에 접근할 수 있도록 자바에서 제공하는 자바 표준 SQL 인터페이스 API 이다. 다양한 종류의 RDBMS 에 접속하고 SQL 문을 수행하여 처리하는 작업을 할 때 사용된다. JDBC 를 통한 자바 애플리케이션과 DB 의 구조는 다음과 같다. 자바 애플리케이션 - JDBC API - JDBC Driver - Database JDBC 는 인터페이스 API 이기 때문에, 각 DBMS 에 맞는 JDBC 드라이버를 설정해주어야 한다. JDBC 드라이버는 실제 DBMS 와 통신을 수행하는 자바 클래스로 jar 파일로 제공됩니다. JDBC 드라이버는 DBMS url 과 계정 정보 등을 입력받아서 DB 연..
[SpringBoot] Database 연동 - 1 (DataSource, h2 database) 1. DataSource DataSource 는 실제 물리적인 database 들과의 연결을 위한 팩토리이다. DriverManager 클래스의 대체제로 username, password 과 URL 을 사용하여 database 와 연결합니다. DataSource 를 통해서 Connection 객체와 connection pooling, distributed transactions 등의 기능을 사용할 수 있습니다. - Configuring a DataSource DataSource 를 사용하기 위해서 먼저 build.gradle 파일의 의존성에 jdbc 라이브러리를 추가한다. 만약 maven 을 사용한다면 pom.xml 의 dependency 에 추가하면 된다. implementation 'org.sprin..
[Spring] Spring MVC 1. Spring MVC 구조MVC 패턴은 애플리케이션의 각 영역을 Model, View, Controller 로 역할을 나누어 설계하는 디자인 패턴이다. 각 영역의 역할은 다음과 같다.  - Controller: HTTP 요청을 받아 파라미터를 검증하고 비즈니스 로직을 실행한다. View 에 전달할 결과 데이터를 모델에 담아서 반환한다. 이때 Controller 와 Model 사이에 Service layer 를 두어서 실제 비즈니스 로직을 구현한다.- Model: view 에 출력할 데이터를 저장하고 있다. Controller 에서 요청이 들어왔을 때 조회, 삽입, 삭제, 수정 등의 데이터를 다루는 동작을 수행한다.- View: 모델에 담겨있는 데이터를 사용하여 화면에 렌더링한다.- Spring MVC..
[Spring] @Controller vs @RestController Spring 에서 컨트롤러를 지정해주는 어노테이션으로 @Controller 와 @RestController 가 있다. @Controller 는 Spring MVC 에서 Controller 의 역할을 하는 클래스를 지정하는 것으로 요청에 대한 응답을 Spring MVC 에서 View 에 결과 객체를 담아서 반환한다. 반면에 @RestController 는 Restful 한 웹 서비스를 구현할 때 사용하는 어노테이션으로 @RestController 로 지정된 클래스는 결과 값을 View 가 아닌 객체 그 자체로 JSON 이나 XML 형태로 반환한다. 해당 결과들은 Http Response 의 Body 에 담겨져서 Client 로 전달된다. 1. @Controller @Controller 는 Client 의 ..
[Docker] Docker vs VM 도커는 하나의 서버에 여러개의 격리된 컨테이너를 구동시켜서 동작시키는 일종의 가상화 기술이다. 그렇다면 기존의 가상화 기술은 어떻게 동작하고 있으며 도커와의 차이점은 무엇일까? 1. VM (Virtual Machine) 가상화 기술이란 물리적인 하드웨어 자원을 논리적인 리소스로 제공하기 위한 기술이다. 가상화 기술을 통해서 물리적인 자원을 논리적으로 구분지워서 각 프로세스에 할당하거나 할 수 있다. 가상화 기술 발전 이전에는 하나의 서버에 하나의 애플리케이션만 구동시킬 수 있었다. 하나의 서버에 하나의 OS, 프로그램 만을 운영하기 때문에 안정적이었지만, 남는 서버 자원을 그대로 방치시키기 때문에 비효율적인 경우가 많았다. 이런 비효율성을 극복하기 위해 등장한 것이 가상화 기술이다. 그 중에서도 하이퍼바..
[SQLAlchemy] 연관관계 설정 ORM 에서는 매핑된 객체들이 서로를 참조하는 구조를 연관관계를 통해서 표현한다. SQLAlchemy 에서는 relationship() 메서드를 사용하여 매핑된 모델 클래스를 정의할 때 연관관계를 표현한다. 연관관계는 1대1, 1대N, N대1, N대M 등의 구조로 이루어져 있다. 1. sqlalchemy.orm.relationship SQLAlchemy 에서는 relationship() 메서드를 사용하여 두 객체 클래스의 연관관계를 지정한다. relationship() 메서드에 연관관계를 맺으려는 클래스의 이름을 입력하여 참조 객체를 생성한다. from sqlalchemy.orm import relationship class User(Base): __tablename__ = "user" # ... tea..
[SQLAlchemy] SQLAlchemy 기본 설명 SQLAlchemy 는 파이썬의 ORM 라이브러리 중 하나이다. 이 글에서는 SQLAlchemy 의 Quick Start 내용을 기반으로 SQLAlchemy 의 기본적인 내용들을 기술한다. 1. Database 연결 - Engine Engine 은 SQLAlchemy 라이브러리의 시작점이다. SQLAlchemy 의 Pool 과 Dialect 기능을 사용하여 실제 Database 에 접근하고 DB API 를 사용할 수 있도록 해준다. 여기서 Pool 은 DB Connection Pool 을 추상화한 클래스로 connect() 를 통해서 DBAPI 연결을 생성한다. Dialect 는 SQLAlchemy 를 여러 종류의 database 와 DB API 들과 연동하여 사용할 수 있도록 하는 역할을 한다. 각 d..

반응형