1. Service Package
서비스 사용하는 이유
- 트랜젝션 관리
- 서비스 의미 때문 : 여러개의 트랜잭션으로 기능을 구현하는 것.
모든 트랜잭션이 실행 되지 않으면 rollback시켜 줌.
repository -> c,r,u,d 하나씩 들고있음
service -> c,c 두개 들고있음(ex,송금서비스)
2. ResponseDto 수정
- 회원가입 시 중복 유저 처리 원활하게
- User model username 중복 안되게 설정
- 결과
3. DB 격리 수준
트랜잭션 : 일이 처리되기 위한 가장 작은 일의 단위
- 오라클 : Read Commit 방식
- mysql : InnoDB Strogy Engine 사용
Repeatable read 이상 방식 -> 부정합 발생 X
스프링에서는
데이터의 변경(insert, update, delete)은 Commit이 필요하기 때문에 @Transaction 사용
select 는 Commit이 필요하지 않지만 정합성을 위하여 @Transaction 사용
(select 하는 동안 같은 데이터를 얻는지 확인하기 위하여)
자기 transaction 번호 보다 낮은 undo 로그를 보고 select를 함.
4. 전통적인 방식의 로그인
- loginForm.jsp 에서 버튼 클릭 시 user.js 실행
- user.js에서 ajax로 login 정보 전달
- Controller에서 정보를 받아서 로그인 서비스 실행
- Repository에서 로그인을 위한 JPA Naming query 생성
// 1. JPA Naming query 전략
// Select * From user WHERE username = ?1 AND password = ?2;
User findByUsernameAndPassword(String username, String password);
// 2. native 한 방법
@Query(value="Select * From user WHERE username = ?1 AND password = ?2", nativeQuery=true)
User login(String username, String password);
- Service에서 repository에서 정의한 naming query 실행 및 정합성 유지
- Controller에서 Session 유지 및 로그인 완료
- jstl을 사용하여 session 생성 시 Nav 메뉴 바뀌게 설정
http://theeye.pe.kr/archives/1563
5. 스프링 시큐리티를 이용한 로그인
'공부 > SpringBoot' 카테고리의 다른 글
[블로그] 글쓰기 (0) | 2022.03.06 |
---|---|
[블로그] 스프링시큐리티 (0) | 2022.02.27 |
[블로그] 오늘의 에러 (0) | 2022.02.21 |
[블로그] 화면구현 (0) | 2022.02.18 |
[블로그] CRUD 테스트 (0) | 2022.02.12 |
댓글