간단 설명

평문 -> SHA-512 -> a~f 0~9랜덤으로 128자

SHA-512는 필연적으로 평문에 훼손이 간다. 즉 128자로 전환은 되는데 전환된 128자가 원래 평문으로 돌아갈 순 없다. 즉 복호화 못하게끔 조치를 취한 것이다. 이를 일방향 암호화라고 한다.

 

 

 

예시

 

자바에서 SHA-512를 구현하는 방법이다. utils 디렉터리 안에 CryptoUtil 클래스를 다음과 같이 만들어, 뭔가를 복호화 시키고 싶은 경우 해당 클래스의 hashSha512 메서드를 호출하면 된다.

 

 

 

 

 

솔트값을 복호화 시키고 싶다. 만약 해당 솔트값을 이메일 + 코드 + 랜덤소수 + 랜덤소수로 이뤘으면 한다, 이를 모두 복호화 하고 싶으면 이런식으로 복호화를 진행하면 된다.

설명

일대일(1:1) 관계에서는 주 테이블이나 대상이 되는 테이블 양쪽 모두 외래 키를 가질 수 있다. 때문에 일대일 관계를 적용할 때는 주 테이블과 대상이 되는 테이블, 어느 쪽에 외래키를 둘지 선택해야 한다.

 

 

 

단방향

 

엔터티가 두개인데, 여기서 LibraryCard에서 보면 LibraryMemeber를 변수로 가지는 owner가 일대일 관계임을 선언하는 조인 컬럼이다. @OneToOne 어노테이션을 설정한다.

 

 

 

 

값을 집어넣었다. fk 부분에 PK로 설정한 값이 넣어져 있는 것을 확인할 수 있다.

 

 

 

 

양방향

 

양방향 관계일 경우 다음과 같이 설정하면 된다.

'JPA' 카테고리의 다른 글

[JPA] JPA의 페이징 - Pageable  (0) 2024.11.26
[JPA] countQuery  (0) 2024.11.10
[JPA] 값 타입 (Value Object)  (0) 2024.02.26
[JPA] SQL 쿼리를 활용  (0) 2024.02.19
[JPA] 식별자 생성  (0) 2024.02.19

엔티티 타입 vs 값 타입

 

엔티티 타입

1. @Entity로 정의하는 객체

2. 식별자를 통해 지속적으로 추적이 가능해 값을 변경해도 식별자를 통해 같은 객체인지 인식 가능

3. 생성, 소멸, 영속 등의 생명 주기가 존재

4. 다른 객체에서 참조가 가능

 

 

값 타입

1. int, Integer, String 등 단순히 값으로 사용하는 자바 기본 타입이나 객체

2. 식별자가 없고 값만 존재하기 때문에 추적이 변경시 불가능

3. 생명주기를 엔티티에 의존. 의존하는 엔티티가 제거되면 함께 삭제

4. 공유하지 않는 것이 안전

 

 

 

 

예시

 

 

@Embedded : 값 타입을 사용하는 곳에 작성한다.

@Embeddable : 값 타입을 사용하는 곳에 작성한다.

 

둘 중 하나만 명시해도 되지만, 둘 다 적는 것이 좋다.

 

 

 

 

 

 

 

값이 정상적으로 저장되었다.

 

 

 

 

 

만약 테이블이 2개이고, 한 쪽이 다른 한 쪽을 참조 할 경우

 

 

 

 

 

 

@AttributeOverrides 와 @AttributeOverride 를 이용하여 속성과 (테이블과 컬럼)의 매핑 정보를 정의한다.

 

 

 

 

 

 

값이 정상적으로 등록되었다.

'JPA' 카테고리의 다른 글

[JPA] countQuery  (0) 2024.11.10
[JPA] @OneToOne, 일대일 관계  (0) 2024.02.26
[JPA] SQL 쿼리를 활용  (0) 2024.02.19
[JPA] 식별자 생성  (0) 2024.02.19
[JPA] 테이블에 데이터 넣기 테스트  (0) 2024.02.04

+ Recent posts