61일: DAO와 ConnectionPool, 암호화와 hash, 포트번호, log4jdbc,

Jiwontwopunch·2022년 2월 10일
0

국비기록

목록 보기
61/121
post-thumbnail

2022.02.10.Thur.

✍ 복습

DAO와 ConnectionPool

DAO는 실질적으로 DB에 접근하는 객체를 말한다. 웹 서버는 DB와 연결하기 위해서 매번 커넥션을 생성하는데 이것을 해결하기 위해 나온 것이 Connection Pool이다. 커넥션풀은 connection 객체를 미리 만들어놓고 그것을 가져다 쓰는 것, 또 다 쓰고 난 후에는 반환해주는 것을 말한다.

암호화와 hash

암호화 : 복호화가 가능
hash : 입력 데이터에 상관없이 결과의 길이가 일정 → 따라서 복호화가 불가능하다. 그래서 비밀번호는 hash를 사용한다.

포트번호, log4jdbc

http port는 80 → 개발할 때는 사용하지 않는다.
개발할 때는 8080을 관습적으로 사용하는데 오라클이 기본포트인 8080을 사용 중이라 sts4 spring에서는 server.port를 8081이나 다른번호로 바꿔줘야 한다. log4jdbc를 이용해 Hikari CP를 만들 수 있도록 설정한다.

Data Transfer Object, Entity

화면에서 게시판 목록을 출력할 때
bno, title, content, nickname, readCnt
회원 : 아이디, 비밀번호, 이메일, 가입일
DTO
회원정보: 아이디, 이메일, 가입일, 가입기간
화면에 맞춘다 : Data Transfer Object
DB에 맞춘다 : Entity

spring Service 만들기

  • @Component는 스프링이 객체를 생성해 ApplicationContext에 등록
  • @Component의 스페셜 버전 : @Controller, @Service, @Repository
  • BoardDao는 sql이 지정된 인터페이스고 마이바티스가 객체를 생성해 ApplicationContext에 등록한다. 그 설정이 MyBatisConfig에 있는 @MapperScan. 따라서 @Repository를 사용해서는 안된다.

@SpringBootTest 내용 추가

@SpringBootTest는 Spring Main Application(@SpringBootApplication)을 찾아가 하위의 모든 Bean을 Scan한다.

@Autowired는 주입하는 것. wiring한다.

BoardDao 수정

테이블 작성을 할 때 컬럼 순서를 맞춰주면 생략이 가능하다.

findById를 어떻게 보느냐에 따라 코드설계가...

findById - DAO는 서비스, 컨트롤러, 화면의 하청업자다.

  • 비밀번호를 읽어오지 마라 왜? 화면에 출력하지 않는다.
  • 변경, 삭제작업을 할 때 비밀번호가 필요하다.
    findById를 고찰까?
    아니면 findPasswordById를 추가할까?

findById - DAO는 DAO다(DB작업만 해) → 이 방법이 맞긴 하다..

  • 당연히 모든 컬럼을 다 읽어온다.
    이 작업으로 수정하기위해 BoardDao를 수정. select에서 password 추가.

게시판 만들기 순서 정리

Spring Starter Project로 zboard생성, 기본설정 잡기

Package

  1. com.example.demo
  • 자동생성된 zboardApplication.java
    : @Configuration
  • MyBatisConfig.java
    : @MapperScan("com.example.demo.dao")
    @Configuration 이하는 복붙해서 사용
  1. com.example.demo.entity
  • Board.java
    : 사용자가 입력한 값을 담고 있는 객체 Command 객체
    @Data, @AllArgsConstructor, @NoArgsConstructor, @Accessors(chain=true)
  1. com.example.demo.dao
  • BoardDao.java
    : @SelectKey, @Insert, @Select, @Update, @Delete
  1. com.example.demo.controller
  • BoardController.java
    : @Controller, @Autowired, @GetMapping, @PostMapping
  1. com.example.demo.service
  • BoardService.java
    : @Service, @Autowired

그 외

  • BoardDaoTest.java, BoardService.java
  • list.html, read.html, write.html → thymeLeaf, bootstrap,jquery 사용

0개의 댓글