일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 캐시서버
- gradle
- STREAM
- 허브
- Jenkins
- Pipeline
- Linux
- JPA
- DevOps
- 방화벽
- jdk
- container
- cloud
- post
- Collection
- Set
- 라우터
- ansible
- Java
- sonarQube
- map
- Spring
- AOP
- LAN어댑터
- 소켓
- tomcat
- 액세스회선
- docker
- IntelliJ
- mybatis
- Today
- Total
목록웹 개발/DB연동 (22)
거북이-https://velog.io/@violet_evgadn 이전완료
if MyBatis 동적 SQL에서 가장 널리 활용되는 것이 if가 아닐까 생각한다. MyBatis에서 결국 동적 SQL은 "어떤 값이 NULL일 때는 조건문에 추가시키지 말고, 값이 존재할 때만 조건문에 추가시켜주세요" 같은 요청을 처리할 때 많이 활용되고 이를 처리하기 위한 가장 적절한 동적 SQL이기 때문이다. WHERE문에 많이 활용되기는 하지만 ORDER BY, GROUP BY 등에서도 를 활용할 수 있다. ◎ 간단한 if 활용 SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} 분명 MyBaits로 짰는데 신기하게도 무슨 말인지 바로 이해할 수 있을 것 같다. 만약..
ResultMap 우리가 MyBatis를 활용하는 이유는 무엇일까? 물론 Query에 객체 값을 넣어줘서 자동으로 내가 원하는 Query를 생성해주고 동적 SQL을 통해 상황에 맞는 Query를 생성할 수 있다는 점도 있을 것이다. 하지만, 개인적으로 생각하는 MyBatis나 ORM의 가장 큰 장점은 "결과를 객체에 담아준다"라는 것이다. 원래라면 DB에서 데이터를 뽑을 때는 단순한 데이터의 형태일 뿐이다. 예를 들어, Name이라는 Column에 "홍길동"이라는 Data가 들어있다고 하더라도 DB에서 뽑으면 단순히 "홍길동"이라는 Data가 뽑힐 뿐, 후처리 코드를 통해 내가 원하는 객체에 이 Data를 넣어줘야 한다. 하지만 MyBatis나 ORM은 Column과 객체 Property를 자동으로 매핑..
NameSpace select * from Blog where id = #{id} Namespace는 XML 파일(Mapping File)과 Mapper Interface를 연결하는 방법이다. 우리는 typeAlias를 활용해서 XML 파일 측에서 자바 객체를 활용할 수 있고, MapperLocation을 통해 Mapper 측에서 XML과 연동될 수 있음을 알았다. 그런데 "어떤 XML이 어떤 Mapper Interface와 연동되는가"에 대해서는 명확히 정한 것이 없다. 우리는 단지 특정 경로에 있는 XML 파일 전체가 Mapping File이 될 수 있다는 것만 명시하였을 뿐 "A XML이 B Mapper Interface와 연동된다"처럼 명확한 연결관계는 아직 설정하지 않은 것이다. 이런 명확한 연..
settings 런타임 시 마이바티스의 행위를 조정하기 위한 값들이다. ◎ settings 설정 방법 및 적용 먼저 위 파일과 같이 XML Config 파일을 만들어줘야 한다. 방법은 간단한데 ~ 으로 SQL이 아닌 Config에 대한 파일임을 알려주고, 를 통해 우리가 원하는 설정값들을 지정해주면 된다. SqlSessionFactory 설정을 설명할 때 setConfigLocation()에 대해 설명한 적이 있었는데 바로 이 메서드를 활용할 차례이다. 하드 코딩을 하거나 application.properties에 Config XML 파일의 경로를 입력해준 뒤 경로를 SqlSessionFactoryBean에 먹여주면 된다. 이후 SqlSessionFactory는 해당 설정을 가지는 SqlSession을 ..
이번에는 이전 설정을 활용해서 직접 MyBatis를 활용해보자. 단, 아직 MyBatis를 제대로 공부해보지 않았기 때문에 MyBatis의 기능을 온전히 활용할 수 없다. 따라서 일단 실제로 Query문이 수행되는지 확인하는 쉬운 Query문에 대해 적용해볼 것이다. 사전 작업 일단 MyBatis를 활용하기 위해선 Database와 Table이 존재해야 할 것이다. Table에 대한 Setting은 아래와 같이 설정했다. 객체 만들기 @Data public class Member { private int num; private String name; private String id; private String pwd; } MyBatis에서 중요한 것은 Query문과 연동될 객체를 만드는 과정이다 SQL ..
MariaDB 설치 여러 가지 DBMS에 대해서는 나중에 CS 쪽을 공부할 때 제대로 다룰 것 같다. 하지만 나는 MariaDB를 자주 활용하는데, 가장 큰 이유는 "공짜"라는 것이고(너무 좋아요 공짜) Oracle 쪽 DBMS는 그쪽만의 Query가 따로 존재하는데 MariaDB는 MySQL의 Query 문법을 활용하므로 나에게 더욱 익숙한 문법을 활용할 수 있다는 점이다. 그렇다면 MariaDB 설치를 순서대로 알아보자 1. MariaDB 공식 사이트 접속 : https://mariadb.org/ MariaDB Foundation - MariaDB.org … Continue reading "MariaDB Foundation" mariadb.org 2. Download 버튼 클릭 3. 원하는 버전의 m..
들어가기 앞서... 이전에 우리는 MyBatis를 실행하기 위해서는 SqlSessionFactory라는 객체가 존재해야 하고, SqlSessionFactory가 매 Request마다 SqlSession을 만들어서 Query를 수행함을 배웠다. 따라서 이번 Section에서는 MyBatis의 주체라고도 말할 수 있는 SqlSessionFactory에 대한 설정을 해보겠다. 사전 작업(이전 Section 참고) 먼저 application.properties의 설정은 이전 Section과 마찬가지로 수행해준다. 우리는 MySQL을 활용하기로 하고 현재 프로젝트 구조는 아래와 같다고 가정하자 # application.properties 설정 spring.datasource.driver-class-name=com..
Gradle에 의존성 추가 build.gradle의 dependencies 위치에 2개의 의존성만 추가해주면 된다. implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4' implementation "mysql:mysql-connector-java:5.1.44" application.properties 설정 MyBatis 같은 경우 "DB"를 활용하기 위한 기술이다 보니 일단 어떤 DB를 활용할 것인지 지정해줘야 한다. (DB 설치 및 활용 방법 같은 경우 나중에 포스팅하도록 하겠다) 이후 application.properties에 "어디에 Mapper가 위치해있는가"에 대한 정보를 입력해 줄 필요가 존재한다. Mapper I..
웹 프로젝트 구성 먼저 MVC 구조를 활용한 Web 프로젝트 구성을 살펴보자. 웹프로젝트는 일반적으로 3개의 Layer로 구성되어 있는데 Presentation Layer, Service Layer, Data Access Layer로 구성된다. 먼저 Presentation Layer는 UI를 담당하는 구성요소로써 MVC 구조에 해당하는 요소들이 이 곳에 포함되어 있다. Service Layer(Business Layer라고도 함)은 어떤 형태의 데이터가 필요하며 반환될 것인지에 대한 로직이 구현되어 있는 Layer를 말한다. 즉 MVC 구조에서 Controller가 Model과 View 사이에 징검다리 역할을 하며 핵심 로직을 수행하는데, 이 "핵심 로직이 구현된 Layer"가 Service Layer라..
SQL Mapper 장단점 ◎ 장점 불필요한 코드들을 줄일 수 있음 이는 SQL Mapper 뿐만이 아닌 ORM의 장점이기도 하다. Persistence Framework의 장점이기 때문에 별다른 설명 없이 넘어가겠다. SQL Query를 그대로 활용하기 때문에 복잡한 JOIN, 튜닝 등을 수월하게 할 수 있음 이 부분이 SQL Mapper가 가진 가장 큰 장점이다. 이전에 말했듯 ORM은 객체와 Table을 연결하는 기술로써, SQL 구문을 입력하지 않고서도 편한 DB 활용을 할 수 있다는 게 장점이었다.(물론 직접 SQL 구문을 입력하여 활용할 수도 있긴 하다) 하지만 이는 곧 단점이 될수 있는데 복잡한 JOIN문을 활용하는 상황에서는 자동으로 SQL 구문을 형성하는 ORM은 더욱 복잡한 Query문..