코딩하는 문과생
[Spring] Spring 프레임워크(6) - 데이터 접근 기술 본문
[Spring-Data Access]
- DAO 디자인 패턴
-데이터 액세스 기술
<수동 맵핑>
-
JDBC: 자바에서의 관계형 데이터 베이스 접속 기술
-
Spring JDBC: 스프링 자체적으로 지원하는 JDBC Wrapper, 커넥션 풀 제공, Result Mapper추상화 사용
-
MyBatis: Third-party 자바 - 관계형 DB 매핑 라이브러리, 자바 객체와 SQL문을 자동으로 매핑(SQL Mapper), XML로 SQL를 별도로 분리, 내부적으로 Spring JDBC를 사용, mybatis-spring 라이브러리 필요
<자동 맵핑>
JPA: Java ORM 표준 인터페이스
Hibernate: 자바 ORM 구현체
[DataSource]
Connection 확보(DB연결), Connection을 가져오기 위한 기술
DataSource를 빈으로 관리한다.
-
커넥션 풀을 사용하는 방법(일반적): 데이터 베이스 커넥션을 미리 여러개를 확보해두고, 클라이언트의 요청에 따라 제공하고 반납받는 시스템
-
Drivermanager를 사용하는 방법: DriverManagerDataSource 클래스를 사용
DB정보는 프로퍼티 파일로 분리해서 관리한 후, 실제 환경설정 파일에서 프로퍼티 치환자( ${... } )를 사용하는 게 좋다.
ex. 데이터베이스 연동
- pom.xml에 의존성 추가, 참고로 mysql 의존성도 추가해야 한다.
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
- servlet-context.xml
<!-- /src/main/resources폴더가 classpath다.-->
<context:property-placeholder location="classpath:config/database.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="${db.driverClass}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
-database.properties
db.driverClass = com.mysql.cj.jdbc.Driver
db.url = jdbc:mysql://localhost:3306/spring?serverTimezone=UTC
db.username = spring
db.password = spring
//db.url뒤에 serverTimezone을 추가해야 Test시 에러가 발생하지 않는다.
//MySQL 버전이 과거에 비해 업그레이드 되면서 고려해야할 사항
'웹 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Spring 프레임워크(8) - MyBatis (0) | 2020.03.10 |
---|---|
[Spring] Spring 프레임워크(7) - Context분리와 전략 (0) | 2020.03.10 |
[Spring] Spring 프레임워크(5) - Spring Test (0) | 2020.03.09 |
[Spring] Spring 프레임워크(4) - static 파일처리, 파일 업로드 (0) | 2020.03.08 |
[Spring] Spring 프레임워크(3) - Rest API (0) | 2020.03.08 |