Back-End

복호화가 불가능하고 암호화만 가능한 암호화 방식 해시 함수를 사용하여 암호화를 진행하며 아래와 같은 특성이 있다. 항상 같은 길이의 문자열을 리턴한다 문자열에 해시 함수 적용 시 서로 다른 문자열은 항상 다른 결과를 반환한다. 반대로 서로 같은 문자열은 항상 같은 결과를 반환한다. 같은 문자라면 결과가 항상 같다는 것 레인보우 테이블 항상 같은 결과를 반환하는 특성을 이용해 해시 함수 적용 전의 값을 알아낼 수 있도록 기록해두는 테이블 이 테이블이 유출되는 경우 해싱이 되었더라도 이전의 값을 알아낼 수 있어 위험하다. 솔트 단어 그대로 소금을 치듯 해싱 이전 값에 임의의 값을 더하여 데이터가 유출되어도 데이터를 알아내기 어렵게 만드는 방법 해싱 값이 유출되더라도 솔트가 유출되는 것이 아니라면 안전함 복호..
Hyper Text Transfer Protocol + Secure Socket layer의 약자로 기존의 HTTP에 보안 기능을 추가한 계층이라고 볼 수 있다. HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해 통신 과정에서 데이터를 암호화하여 전송하는 방법이다. HTTPS의 장점 암호화 서버와 클라이언트가 주고 받는 정보를 중간에 제 3자가 탈취할 수 없도록 정해둔 방법으로 데이터를 암호화하여 주고 받기 때문에 데이터가 탈취되어도 데이터를 알아볼 수 없다. 클라이언트와 서버 간의 데이터는 비대칭키와 대칭키 방식을 혼용해서 사용하기 때문에 데이터를 복호화하기 전까지 제 3자는 데이터를 알 수가 없기 때문이다. 클라이언트와 서버 간의 데이터를 주고 받을 때는 양쪽이 비밀 키를 공유하여 데이터를 암..
슬라이스 테스트 슬라이스라는 단어처럼 자기가 테스트하고자 하는 계층 외에 나머지 계층들과는 단절하여 오로지 하나의 계층만 테스트하는 방법이다. 컨트롤러 슬라이스 테스트 서비스 영역 같은 다른 영역을 사용하지 않고 컨트롤러만 사용하여 테스트를 하고자 하는 경우에는 기본적인 양식은 아래와 같다. @WebMvcTest(AnswerController.class) public class QuestionControllerTest { @Autowired private MockMvc mockMvc; @Autowired private Gson gson; @MockBean private QuestionService questionService; @MockBean private QuestionMapper questionMa..
· Back-End/JPA
ManyToOne 다대일 관계의 반대 방향은 항상 일대다 관계이며 일대다 관계의 반대 방향도 다대일 관계다. 데이터베이스에서 일대다 관계에서 외래 키는 항상 다쪽이 가지고 있기 때문에 객체의 양방향 관계에서의 주인도 항상 다쪽이다. 양방향 연관관계는 항상 서로를 참조해야 한다. setTeam, addMember 같은 편의 메서드를 작성하는 것이 좋지만 양쪽에 모두 작성하는 경우에는 무한루프에 빠질 수 있으니 검사해줘야 한다. OneToMany 일대다 관계는 엔티티를 하나 이상 참조할 수 있어서 컬렉션 타입을 사용한다. 일대다 단방향 관계를 매핑할 때 @JoinColumn 어노테이션을 명시하지 않으면 연결 테이블을 중간에 두고 연관관계를 관리하는 조인 테이블 전략을 사용하여 반드시 명시해주는게 좋다. 일대..
· Back-End/JPA
단방향 연관관계 만약 위와 같은 연관관계의 테이블이 있다고 했을 때 멤버는 하나의 팀에만 소속될 수 있지만 팀은 여러 명의 회원을 가질 수 있는 다대일(멤버:팀) 관계이다. 테이블과의 연관관계는 한 쪽에서만 외래키를 참조하면 어느 쪽에서든 조인할 수 있는 양방향 관계이다. @Entity @Table @Getter @Setter public class Member { @Id @Column(name = "member_id") private int id; @Column(name = "member_name") private String memberName; @ManyToOne @JoinColumn(name = "team_id") private Team team; } @Entity @Table @Getter @S..
· Back-End/JPA
JPA는 클래스의 매핑정보와 데이터베이스 방언을 사용해 스키마를 자동으로 생성하는 기능을 지원한다. 해당 속성을 추가하면 애플리케이션 실행 시 데이터베이스에 테이블을 자동으로 생성해준다. 실제 서버 운영에서 사용할 만한 기능은 아니기 때문에 개발 환경이나 학습용으로만 참고하는 것이 좋다. 해당 속성을 추가하여 sql이 어떻게 작성되는지 볼 수 있다. 속성 create 기존 테이블 삭제 후 새로 생성 create-drop create + 애플리케이션 종료 시 테이블 삭제 update 데이터베이스와 매핑정보를 비교해 변경 사항만 수정 validate 데이터베이스와 매핑정보를 비교해 차이가 있으면 경고 후 실행하지 않음 none 자동 생성 기능을 사용하지 않고 싶을 때 사용
· Back-End/JPA
@Entity @Entity public class Member { } 테이블과 매핑할 클래스는 해당 어노테이션을 필수로 붙여야 한다. 속성 name 기본값은 클래스명을 사용하며, 직접 지정도 가능하다. 주의사항 기본 생성자는 필수다. final 클래스, enum/interface/inner 클래스에는 사용할 수 없다. 필드에도 final을 사용하면 안 된다. @Table @Entity @Table(name = "Member", uniqueConstraints = {@UniqueConstraint (name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"})}) public class Member { } 엔티티와 매핑할 테이블을 지정하는 어노테이션이다. 생략 시 ..
예외처리 시 하지 말아야 할 행동 모든 예외는 반드시 적절하게 복구하거나 중단시키고 개발자에게 통보되어야 하는데 예외를 잡고 어떠한 처리도 하지 않고 넘어가거나 출력만 하는 행동과 무의미하고 무책임하게 다른 곳으로 예외를 던져버리는 행동은 무슨 일이 있어도 해서는 안되는 행동이다. 예외의 종류 CheckedException 말그대로 예외를 확인하고 처리해야 하는 경우를 말하며 일반적으로 예외라고 하면 이 ChekedException을 말한다. 이때 예외처리는 필수이기 때문에 처리해주지 않을 경우 컴파일을 에러가 발생한다. 대표적으로 IOException, SQLException 등이 있다. UncheckedException RuntimeException 클래스를 상속 받은 예외들로 ChekedExcept..
da9dac
'Back-End' 카테고리의 글 목록 (5 Page)