▶ 비대칭키(암호화, 복호화키가 각각있다.)
▶ 대칭키 ➡➡seed aria aes
▶ 임의의 길이 텍스트를 고정된 일정한 길이의 코드로 생성. 스프링 security. 복구 못함 초기화 해야한다.
원본 데이터의 변경을 확인하는 무결성 검증에 사용(원본 데이터가 변경되면 해시 값도 변경된다.)
사용자의 입력으로 해시 값을 생성하여 암호의 해시 값과 비교하여 일치 여부 확인
빈으로 설정하여 실행
(Object Relational Mapping)
객체-관계 매핑
JPA - Hibernate, iBatis의3rdParty /Sequelize/Django ORM 플러그인 제공
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 Framework
각 테이블 또는 구분하고자 하는 데이터 단위로 객체를 구현하고, 데이터 간의 관계를 형성
▶ ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.
⭐⭐ ORM이 모든 걸 해결해줄 수 없다.
모든 것을 ORM을 통해서만 구현하는 것은 힘들다. 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수도 있다.
기존의 기업들은 ORM을 고려하지 않은 DB를 사용하고 있어 ORM에 적합하게 변환하려면 많은 시간과 노력이 필요로 한다.
DB와 바로 연결하는 것보다 초기설정이 더 많아지거나 복잡해 질 수있다.
DB와 ORM 프레임워크, 내부코드에 대한 충분한 이해가 없는 경우 문제 해결이 힘들다.
package com.oracle.oBootMybatis01.service;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Paging {
private int currentPage = 1;
private int rowPage = 10;
private int pageBlock = 10;
private int start;
private int end;
private int startPage;
private int endPage;
private int total;
private int totalPage;
// 25
public Paging(int total, String currentPage1) {
this.total = total; // 140
if(currentPage1 != null) {
this.currentPage = Integer.parseInt(currentPage1); //2
}
// 1 10
start = (currentPage - 1) * rowPage + 1; // 시작시 1 11
end = start + rowPage -1; //시작시 10 20
// 25 10 -> 2.5 -->3
totalPage = (int) Math.ceil((double)total / rowPage); //시작시 3 5 14
// 2 2
startPage = currentPage = (currentPage - 1) % pageBlock; //시작시 1
endPage = startPage + pageBlock -1; //10
// 10 14
if(endPage > totalPage) {
endPage = totalPage;
}
}
}
forward / redirect는 약간의 차이가 있다.
return "forward:list";
return "redirect:list";
변화가 있는건 redirect // 단순 조회는 forward 사용
서브쿼리 :
결과화면 :
결과화면을 보고 완성해보기. writeFormEmp
작업시 하였던 작업순서.
화면 만들기 (html /jsp)
Controller 작성 (➡ 작성후 밑줄. create 하면 service로 넘어간다.)
Service 작성(Service는 자동생성, ServiceImpl는 생성후 작성)
클릭하여 Dao에 자동생성. ➡ Dao Impl에 import
모든 걸 다 작성 후
mapper로 와서 sql작성
특정 값을 통해서 조회 하는게 아니라 전체를 조회시엔
#{}
를 안한다.
<select id="tkEmpSelOne" parameterType="int" resultType="Emp">
SELECT * FROM emp WHERE empno = #{empno}
</select>
<update id="tkEmpUpdate" parameterType="Emp">
Update emp SET ename=#{ename}, job=#{job}, mgr=#{mgr},
sal=#{sal}, hiredate=#{hiredate},
<if test="#{comm} != null"> comm=#{comm}, </if>
deptno=#{deptno}
WHERE empno=#{empno}
</update>
<select id="tkSelectManager" parameterType="int" resultType="Emp">
SELECT * FROM EMP WHERE empno IN (SELECT mgr FROM emp)
</select>