다음주
1.H/V 하이버네이션 벨리데이터 : 검증
2. Tiles 네비바, 페이지 모듈화
3. Spring
4. 데이터 보안 : 스니핑 스키핑에 보호하기 https 시큐어프로토콜(보강)
5. Filter스펙 구조로 접근 제어 구조를 만들어보자.
오늘 수업 : myBatis
1.불편한것? 쿼리문이 마이바티스 안에서 실행되서 눈에 안보인다.
2. 로깅 프로그램 활용해보기
1. maven project 만들기
2. pom.xml plugin , dependency 설정하기
> 메이븐 업데이트
3.webstudy01 에서 필요한 파일들 복사해오고,
4.
오... 너무어려워 ;;;;; 연습해봐야게따...
myBatis 써보자
순서
1. 다운로드
2. pom.xml 의존성 추가
3.Configration.xml 에서 트랜잭션 설정, 커넥션 생성 설정, 쿼리객체 생성 설정
4.member.xml : 쿼리문 등록
기본적으로 pstmt : 정적, 파라미터 / statementType=""로 설정할 수 있음
stmt : 정적 callable : 절차적?
name space 다오 인터페이스로, 다오의 구현체
5. 임플 ▶MemberDAOImpl
1. 메서드 2. 연결 3. 프록시
The MyBatis Blog
A blog about the the MyBatis data mapper framework.
blog.mybatis.org
dependency 하고,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
내부적으로 커넥션 풀이다
풀드가 필요하다
내부에 트랜직션 매니저가 있어서 commit을 따로 하지 않아도 된다.
하나의 설정파일에 여러 db를 설정할수 있다. environment : db설정 묶음
디폴트 값도 정해놓음
pstmt를 하기 위한 QString 맵핑할 맵핑 타입 <mapper>
클래스패스 리소스의 형태 ->
이제 파일 저런 구조로 진짜 생성하자.
configration.xml 생성하자
도큐먼트의 디피니션을 찾아야한다.
▶Configration.xml 생성됨.
<properties resource="kr/or/ddit/db/dbinfo.properties" />
클래스 로더의 규칙 : 맨앞 슬래쉬 없는 절대경로
<property name="poolMaximumIdleConnections" value="${initialSize}" />
<property name="poolMaximumActiveConnections" value="${maxTotal}" />
<property name="poolTimeToWait" value="${maxWait}" />
롤백 커밋담당할 트랜직션매니져 설정하기
mybatis는 클라이언트 아니고 session 개념. 통로의 개념의 세션
▶CustomSqlSessionFactoryBuiler
▶testGetSqlSessionFactory 테스트해보잣
▶Member.xml
namespace : 필수 ., 인터페이스의 퀄러파이드네임 필수
설정하고나면 마이바팁스에 의해 id가 코드어시스트 된다.
이것은 sqlmapper, 이것을 datamapper로서의 일을 하게 하기 위해 ibatis의 rs대신 resultType을 준다.
타입 엘리어스는 아바와 다르게 맵퍼에서 설정하지 못하게 되어있고 컨피그에서 설정하도록 되어있다.
그리고 vo마다 하나하나 등록할 필요가 없고 패키지로 덩어리채 모두 등록할 수 있다. 그럼 리절트타입을 심플네임으로 바꿀 수 있다.
아바에서 인라인 파라미터를 ##로 입력했다면 마바에서는 #{}로 바뀌었다.ㄹ
==>해당 인터페이스의 시그니쳐를 담기 위해 네임스페이스 아이디 리절트타입(리턴타입)을 정했다. 파라미터도 정하
SELECT MEM_ID "memId", MEM_PASS, MEM_NAME
FROM MEMBER
WHERE MEM_ID = 'a001';
스트릿트 알리아스 => 대소문자 구분하게 한다.
매번 스트릿트 귀찮다. 마이바티스에 있을 것이다 찾아보자. 도큐먼
return sqlSession.selectOne("kr.or.ddit.member.dao.MemberDAO.selectMemberForAuth", memId);
메서드 명이나 파라미터를 실수하거나 놓쳐도 오류가 안나. 그래서 맵퍼 프록시 등장.ㄹ
기본이 롤백
널을 넣으면?
인라인 속성
#{memId,jdbcType=VARCHAR} 으로 데이터 타입 정해주자 데이터 타입에 맞춰 널넣어준다.
JdbcType enum파일 보자
💊PL의 SQL을 넘기는
💊💊마이바티스에서 등록수정삭제 주의할 점
1. 트랜잭션관리
2. 인라인 속성으로 타입핸들러 관리
▶ memberVO, member.xml
date타입들이 String으로 되어있어 매번 변환하고 있다.
▶sql : DESC MEMBER;
DATE -> 날짜개념인데도 에폭크 타입의 밀리세컨드 시간을 사용해서 시간의 개념도 가지고 있다.
TIMESTAMP(시간까지 나타내는 형식)형식으로 바꿔보아도 문제가 없다.
▶BeanUtilsTest
"2023-03-08T16:45"
ui이로 사용자가 찍은 날짜의 형식이다. 이것을 컨트롤러에 빈유틸즈가 객체로 만들어주고 있기 때문에
빈유틸즈의 컨버터를 이용하여 변환해본다.
▶PopulationUtils 유틸로 만들어버림
! 로그4제이 써보자
1.빔프로젝트 역
https://logging.apache.org/log4j/2.x/
Log4j – Apache Log4j™ 2
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apa
logging.apache.org
SLF4J
Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framewor
www.slf4j.org
퍼사드?
https://log4jdbc.brunorozendo.com/
Log4jdbc-log4j2
This project was imported from https://code.google.com/archive/p/log4jdbc-log4j2/ Original License: Apache License 2.0 log4jdbc-log4j2 is a modification of log4jdbc to natively use Log4j 2 (or SLF4J as usual), that supports JDBC 4.1 to JDBC 3, includes all
log4jdbc.brunorozendo.com
프레임웍은 설정파일이 필요하다.
로그포제이는 설정파일
▶log4j2.xml
로그 메세지 종류4가지 : 누가 어떤 어떻게
appender : 로깅 매체
layout : 메시지 형식
level : 로깅 이벤트 등급 trace -> debug -> info -> warn -> error -> fatal
logger : 메시지 기록자.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
<Appenders> 어디에 어펜드 할까? DB도가능
우리 사이트에 어떤 사람들이 가입하나? 알아보기 위해서는
file append로 하면 일일이 저장을 해야하는데 db appender하면 db로 저장되어서 관리하기가 좋다.
커넥션 풀링 의 장점? 커넥션 부하가 일정하다
쓰레드 풀링이면?
1. 서버의 부하가 일정하게 걸린다. 2. 시간이 오래걸리는 쓰레드 생성작업을 미리 해두기 때문에 속도가 올라간다.
3. 객체의 재활용이 되어서 메모리 공간이 효율적이다.
배치잡의 기본이 되는 쓰레드 그때 스레드 풀링 해보자.
쿼리 로그 내용을 정리해서 보여주는 log4jdbc
logger 가 jdbc이다.
<MarkerFilter marker="LOG4JDBC_OTHER" onMatch="DENY" onMismatch="NEUTRAL"/> 추가하니
'내가 보려고 정리하는 > Spring' 카테고리의 다른 글
웹 : 페이징, 검색: 0328 (0) | 2023.03.28 |
---|---|
웹 : DomainLayer myBatis 적용 : 0327 (0) | 2023.03.27 |
웹 : MAVEN : 0323(2) (2) | 2023.03.23 |
웹 : DB 코드 조각 활용하기 , EL Desc: 0322 (0) | 2023.03.22 |
웹 : Performance Check : 0321(2) (0) | 2023.03.21 |