스프링MVC프로젝트의 기본구성
Presentation tier 화면계층 > Business 비즈니스로직(서비스) > Persistence tier 영속계층(데이터계층)
**각 영역은 설계 당시부터 영역을 구분하고 인터페이스를 이용해서 연결하도록 구성
DAO의 역할 => Mybatis의 Mapper 인터페이스
VO : read only 목적의 데이터 객체 / DTO : 데이터 수집 목적의 데이터 전송 객체
Sqldeveloper 계정 생성 DBA 권한 부여
create user book_ex identified by 1234;
grant connect, dba to book_ex;
**포트번호 확인 후 8080 > 9090변경
select dbms_xdb.gethttpport() from dual;
exec dbms_xdb.sethttpport(9090);
** jdbc jar 파일 추가 :: oracle 11g 까지는 maven으로 jdbc 라이브러리 지원이 안되기 때문에 직접 해당 프로젝트에 jar(sqldeveloper 설치 폴더 내부에 jdbc/lib폴더 안에 있음) 파일을 추가 해주어야 함 >> pom.xml에 dependency 로 추가
>> 추가 후 buildpath에 다운로드한 ojdbc파일을 경로에 추가함
** war 파일로 변환시 jar 파일이 포함될 수 있도록 web deployment Assembly 항목에도 jar파일을 추가해주어야 함
>> jdbc 드라이버 추가 후 디비 연결이 정상 동작하는지 테스트 코드를 작성하여 확인
커넥션풀 사용 이유 :: 여러명의 사용자를 동시 처리하는 웹 어플리케이션의 경우 디비 연결시 커넥션풀을 이용해야 함 >> 스프링에 커넥션 풀 등록 >> datasource 를 통해 매번 데이터베이스와 연결하는 방식이 아닌 미리 연결을 맺어주고 반환하는 구조를 이용하여 성능 향상하기 위함
*Java 에서는 datasource 인터페이스를 통해 커넥션풀을 사용함
Mybatis의 핵심 객체 :: sqlSession / sqlSession Factory
**sqlsessionFactory :: sqlSession을 만들어내는 존재
**sqlSession :: connection을 생성하고 원하는 sql을 전달하여 결과를 리턴 받는 구조
Mapper :: sql 과 그에 대한 처리를 지정하는 역할 >> Mapper를 xml과 인터페이스 + 어노테이션의 형태로 작성 가능
ex)
public interface TimeMapper {
@Select("SELECT SYSDATE FROM DUAL")
public String getTime();
}
Mapper 작성 후 MyBatis가 동작할 때 Mapper 를 인식할 수 있도록 root-context.xml에 <mybatis:scan>태그를 이용해 추가 설정을 해줘야 함
MyBatis-Spring 은 mapper 인터페이스를 이용해 실제 sql 처리가 되는 클래스를 자동으로 생성함
>> 인터페이스와 sql만을 작성하는 방식으로도 모든 jdbc처리를 끝낼 수 있음
** static block >> static{}
클래스 초기화 블럭 : 클래스 변수의 복잡한 초기화에 사용된다. 클래스가 처음 로딩될 때 한번만 수행된다.
'WebApplication' 카테고리의 다른 글
[Spring] Controller 비즈니스 로직처리(CRUD) (0) | 2022.07.31 |
---|---|
[Spring] 스프링 MVC 패턴 mapper작업 (with. MyBatis) (0) | 2022.07.29 |
[Spring] 스프링 작동 원리 및 어노테이션 개념 정리 (0) | 2022.07.27 |
[Servlet/JSP] dao dto vo의 개념 (0) | 2022.07.24 |
[Servlet/JSP] jsp 내장객체의 개념과 종류 (0) | 2022.07.24 |