동적 SQL MyBatis를 사용하는 이유는 편리한 동적 SQL 기능 때문이다. 동적 쿼리를 위해 제공되는 기능은 아래와 같다. if choose(when, otherwise) where foreach MyBatis 공식 매뉴얼: https://mybatis.org/mybatis-3/ko/index.html MyBatis 스프링 공식 매뉴얼: https://mybatis.org/spring/ko/index.html if 단순한 if 문이다. if문의 test 조건에 만족하면 해당 SQL문을 추가한다. SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} choose - when, otherwise 자바의 switch 구문과 비슷하다. swi..
MyBatis란?MyBatis는 JdbcTemplate이 제공하는 대부분의 기능을 제공한다. 그러나 JdbcTemplate의 문제점 중 하나인 여러 줄의 String 형 sql을 작성해야 한다는 점을 MyBatis를 이용하여 해결할 수 있다.MyBatis는 SQL을 xml에 편리하게 작성할 수 있고, xml 내에서 동적 쿼리를 매우 편리하게 작성할 수 있다. JdbcTemplate은 스프링에 내장된 기능이고, 별도의 설정 없이 사용할 수 있지만, MyBatis는 약간의 설정이 필요하다. 따라서 동적쿼리와 복잡한 쿼리를 많이 사용하는 경우에는 MyBatis를 사용하고, 단순한 쿼리들이 많다면 JdbcTemplate을 사용하는 것이 좋을 것이다. 2024.07.31 추가단순한 도메인 관련 엔티티를 불러오는..
JdbcTemplate이란? JdbcTemplate은 SQL을 직접 사용하여 JDBC를 다루는 편리한 방법 중 하나이다. JdbcTemplate은 JDBC를 직접 사용할 때 발생하던 여러 가지 반복 문제를 해결해 주고, 트랜잭션을 위한 커넥션 동기화와 스프링 예외 변환기 등의 기능을 자동으로 실행해 준다. 장점 JdbcTemplate은 스프링으로 JDBC를 사용할 때 자동으로 포함되는 spring-jdbc 라이브러리에 속해있기 때문에 별도의 복잡한 설정 없이 사용할 수 있다. 템플릿 콜백 패턴을 사용해서 JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해 준다. 개발자는 SQL을 작성하고 전달할 파라미터를 정의하여 응답 값을 매핑하기만 하면 된다. 트랜잭션을 위한 커넥션 동기화, 스프링..
데이터베이스 커넥션 획득 과정 1. 애플리케이션에서 DB 드라이버를 통해 커넥션 조회 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이처럼 커넥션을 생성하는 과정은 복잡하고, 시간이 많이 소모되는 일이다. 또한, 애플리케이션 서버에서도 TCP/IP 커넥션을 새로 생성하기 위해 리소스를 매번 사용해야 한다. 따라서 전반적인 응답속도에 영향을 준다. 이를 해결하기 위해 일정 개수의 커넥션을 미..
이 글에서 설명하는 방법은 현재 직접적으로 사용하는 방법은 아니다. 아래의 과정을 편리하게 라이브러리화 하여 사용한다. 그러나 JAVA의 모든 데이터 접근 기술은 이런 복잡한 과정을 자동화하여 개발자가 이용하기 쉽게 만든 것뿐, 내부에서는 똑같이 동작한다. JDBC 표준 인터페이스 JDBC (Java Database Connectivity ) : 자바에서 데이터베이스에 접근할 수 있도록 하는 자바 API 이다. JDBC는 연결, SQL 전달, 결과 응답의 3가지 기능을 표준 인터페이스로 정의해서 제공한다. Connection : 연결 Statement : SQL 전달 ResultSet : 결과 응답 인터페이스로 제공하는 이유는 여러 가지 DB (MySQL, Oracle 등 ) 마다 조금씩 사용법이 다르기..
SELECT FROM SQL에서 데이터를 조회할 때는 기본적으로 SELECT A FROM B를 사용한다. SQL의 특징 중 하나는 사용하는 구문이 영어 그 자체와 비슷하다는 점이다. SELECT(선택한다) A를 , FROM B (B로부터)라고 해석하면 어느 정도 말이 된다. SELECT CustomerName FROM Customers; 위의 코드는 " 선택한다, CustomerName을, 어디로부터? , Customers 테이블로부터. "라고 해석할 수 있다. 이렇게 간단하면 좋겠지만, 이외에도 WHERE, AS, DISTINCT 등 여러 가지 키워드를 덧붙여서 조금 더 조건에 맞는 데이터를 조회하기 위한 방법들이 있다. 조건을 더하기위해 WHERE을 사용한다. SELECT... FROM... WHER..
INSERT INTO : 데이터 추가 id, name, loginId, password의 attribute를 갖고 있는 MEMBER table에 데이터를 추가하는 예제이다. TABLE에 존재하는 여러가지 constraints들에 맞게 데이터를 삽입해야한다. 방법 1 : 모든 속성 선택 table에 존재하는 attribute의 순서대로 값을 넣어줘야 한다. table에 존재하는 모든 attribute에 값을 넣어줘야 한다. (null이라도 넣어야함) insert into member values(3, 'Lee', 'Lee1', 'pwLee'); 방법 2 : column 지정 아래 방식을 사용하면, attribute 순서를 맞추지 않아도 된다. (순서를 지정해준다.) 이 방법을 사용하면 모든 attribut..
table 생성 기본 구조 (attribute명) (DataType) (constraints1) (constraints2) create table member( id bigint primary key, name varchar(20) not null, login_id varchar(20) not null, password varchar(100) not null ); table 삭제 drop table (table_name); 1. PRIMARY KEY 설정 primary key는 table의 tuple을 식별하기 위해 사용한다. 하나 이상의 attribute로 구성되어 있으며, 중복된 값, Null 값을 가질수 없다. primary key 선언 attribute 하나일 때 create table membe..