DAO -> MaBatis -> DB + Test(Junit)
- XML을 사용하여 SQL작성, DAO객체 생성하여 연결
- SQL구문 수정 및 유지보수 우수함(컴파일X)
- 개발시 코드의 양이 증가(복잡도 증가)
- 어노테이션을 사용해서 SQL작성, DAO 인터페이스 생성해서 연결
- DAO 객체 없이 인터페이스만으로 처리(생산성 증가)
- SQL 변경시 매번 컴파일 진행해야함
- XML/어노테이션 사용 SQL 작성, DAO객체 생성해서 연결
- 둘의 단점 개선하고 보완한 것
- SQL 작성시 간단한 것 - 어노테이션, 복잡-XML 사용하여 처리
- 개발자의 역량에 따른 큰 차이가 발생가능하다
MyBatis 개발 사용 순서
*도메인 : 프로젝트에 중요한 단어(용어) => 물리적인 환경으로 분리가능한 단위 ex) 쇼핑몰 -> 회원, 상품, 관리자, 주문, 장바구니…
- 데이터베이스 생성(계정) 계정을 가지면 권한이 뭔지 확인하는 습관!
- 테이블 생성, 설정준비
- 도메인 객체(클래스) 생성 => DTO/VO 생성
- DAO 인터페이스 생성
- 인터페이스에 구현해야하는 동작을 추상메서드로 선언
- XML(Mapper) 생성, 위치(저장경로-namespace) 설정
->쿼리를 저장할 수 있는 공간 - XML mapperDTD 추가
- SQL 구문 작성(태그형태)
- XML(mapper) 정보를 MyBatis에서 인식하도록 설정
- DAO 객체 생성 (인터페이스 구현하는 객체)
- 테스트 동작 수행
→ 처음 한번만 수행, 두번째는 수정만 하면됨~
2. 테이블 생성, 설정준비
tbl_member이라는 이름을 가진 테이블을 생성한다. regdate와 updatedate의 default값에는 now() 속성을 준다.
apply하면 위처럼 now가 current_timestamp로 바뀌는데, 실시간으로 반영한다는 의미이다.
3. 도메인 객체(클래스) 생성 => DTO/VO 생성
domain 패키지 생성하고 MemberVO 객체 만들기
lombok 설치
jar 파일 바탕화면으로 옮기기
jar : 자바 압축파일
cmd
dir : 디렉터리 정보 보기
윈도우의 c:/사용자/itwill/ 과 같은 위치
cd Desktop
dir -> lombok.jar 있는지 확인
java -jar lombok.jar
specify location
C:\Users\ITWILL\Desktop\spring-tool-suite-3.9.12.RELEASE-e4.14.0-win32-x86_64\sts-bundle\sts-3.9.12.RELEASE/sts.exe → select → install
sts.exe 위에 lombok.jar가 있으면 제대로 설치된거임 → 툴에 lombok 추가
기존에 있던 sts바로가기 삭제 후 lombok이 적용된 sts 다시 바로가기 만들기~ (sts끄고)
라이브러리에 lombok 추가
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.30
maven 복사하여 pom.xml 외부라이브러리 추가
클래스명 위에 @Data 추가
@Data : 필요한 기본 설정값을 지정
*단어가 첫글자가 소문자이고 두번째글자가 대문자인 이름은 피하는게 좋다.
4. DAO 인터페이스 생성
5. 인터페이스에 구현해야하는 동작을 추상메서드로 선언
인터페이스를 구현한 implements를 사용
약한 결합을 통해 구현할거임
6. XML(Mapper) 생성, 위치(저장경로-namespace) 설정
7. XML mapperDTD 추가
<mapper namespace="com.itwillbs.mapper.MemberMapper">
</mapper>
com.itwillbs.mapper.MemberMapper : 파일의 경로가 아닌 그저 이름
8. SQL 구문 작성(태그형태)
주의!
세미콜론을 붙이지 않음
<mapper namespace="com.itwillbs.mapper.MemberMapper">
<select id="getTime" resultType="string">
select now()
</select>
</mapper>
- 대소문자 구별해서 소문자만씀
- 세미콜론을 붙이지 않음
- select를 불렀을때 결과가 있으니 타입을 저장하는게 무조건 필요함. string으로 자동으로 바꿔줄거임
9. XML(mapper) 정보를 MyBatis에서 인식하도록 설정
디비연결정보에 적어놓을거임
root-context.xml
<!-- sqlSessionFactory : 디비연결, 데이터처리(SQL실행, Mybatis 설정) -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:/mappers/**/*Mapper.xml"/> </bean>
<!-- sqlSessionFactory : 디비연결, 데이터처리(SQL실행, Mybatis 설정) -->
** : 모든 파일
*:Mapper.xml로 끝나는 파일을 연결하겠다.
10. DAO 객체 생성 (인터페이스 구현하는 객체)
Impl : implements
DAO를 implements 한 객체다
@Repository : 스프링이 해당파일이 MemberDAO 역할을 수행하는 객체로 인식되게 하는 코드
root-context.xml에 와서 맨아랫줄 /beans 위에
이곳에 객체가 등록이 됐음
component-scan를 줬기 때문에 직접 경로 설정을 안하고 주입할 수 있다.
이 설정 없이 별도의 설정없이도 root와 연결되어있기 때문에 @repository 통해 dao에 연결 → root → sqlSession
이 객체만으로 root에 연결되있음
select는 void밖에 없기때문에 select가 아닌 selectOne을 사용하겠음
→ select에서 하나를 들고옴
→ memberMapper.xml에 있는 namespace 복사해서 붙여넣기
11. 테스트 동작 수행
→테스트 전용 클래스
로거 객체 생성(출력전용 객체)
syso를 이제 잘 안쓸거임. 대신에 로거를 써보장
logger 단축키 설정
window-preferences-java-editor-templates
선언, 사용 두번 써야함
Name : mylogger Context : Java Description : 로거 객체를 생성하는 단축어
${:import(org.slf4j.Logger,org.slf4j.LoggerFactory)}
private static final Logger logger
= LoggerFactory.getLogger(${enclosing_type}.class);
'spring · spring boot' 카테고리의 다른 글
[Spring] 프로젝트 DB연결 세팅 - test (0) | 2023.12.14 |
---|---|
[Spring] 프로젝트 base 설정 (0) | 2023.12.14 |
[spring] HikariCP 커넥션 풀 연동하기 (0) | 2023.12.05 |
[spring] 의존 객체 자동 주입 (0) | 2023.12.04 |
[spring] sqlSessionFactory, mybatis-config.xml (1) | 2023.12.04 |