Web(54)
-
[JPA] Java Persistence API 를 사용하는 이유
1. JPA 자바 진영에서 ORM(Object - Relation Mapping) 기술 표준으로 사용되는 인터페이스 모음 구현된 클래스와 맵핑 해주기 위해서 사용되는 프레임워크 JPA를 구현한 대표적인 오픈소스로는 Hibernate 가 있다. ORM(Object - Relation Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 Mapping( 연결 ) 해주는 것을 의미한다. 객체지향 프로그래밍 - 클래스 사용 / 관계형 데이터베이스 - 테이블 사용 객체모델과 관계형 모델간의 존재하는 불일치를 ORM을 통해 객체간의 관계를 바탕으로 SQL문을 자동으로 생성 2. JPA 사용이유 기존의 개발 방식(Mybatis)은 SQL 중심적인 개발이었지만, JPA를 사용하면서 객체 중심으로 개발이 가능하..
2024.03.21 -
[JPA] 영속성 컨텍스트
1. 영속성 컨텍스트 ORM은 객체와 데이터베이스 테이블의 맵핑을 통해 엔티티 클래스 객체안에 포함된 정보를 테이블에 저장하는 기술 JPA에서는 엔티티 객체 정보를 영속성 컨텍스트를 통해 어플리케이션 내에서 오래 지속되도록 보관한다. Server side와 Database 사이에 엔티티를 저장하는 논리적인 영역이라고 할 수 있다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 영속성 컨텍스트는 엔티티 매니저(Session)를 생성할 때 하나 만들어진다. 그리고 엔티티 매니저(Session)을 통해서 영속성 컨텍스트에 접근할 수 있고 영속성 컨텍스트를 관리할 수 있다. EntityManagerFactory : EntityManager를 생성한다...
2024.03.20 -
JWT 와 RTR기법
1. JWT jwt는 사용자가 로그인을 하면 서버는 해당 사용자가 인증(Autehntication)되었고, 기본적인 정보를 토큰으로 만들어 응답 사용자는 이 토큰을 기반으로 인가(Authorization)를 필요로 하는 요청에는 Header에 토큰을 담아서 보내게된다. Json 개체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준 Header (헤더) alg : 해싱 알고리즘을 지정한다. 해싱 알고리즘은 기본적으로 HS256을 사용한다. typ : 토큰의 타입을 지정. JWT이기 때문에 typ는 JWT 고정 Payload (내용) 토큰에 담을 정보를 담는곳 정보 하나하나가 클레임(claim)이라고 부르고 Key : Value로 이루어져있다. 민감한 정보는 넣지않는것이 좋다 공개클..
2024.03.20 -
[JAVA] GC에 대하여
Garbage Collection 자바에서 할당된 메모리들에 대해 Garbage Collector(GC)가 자동으로 불필요한 메모리를 수집해 해제해주는 역할을 담당 동적으로 할당된 메모리 영역 가운데 더이상 사용하지 않거나 불필요하게 할당된 영역을 탐지하여 자동으로 해제하는 기법 장점 유효하지 않은 포인터 접근 : 이미 해제된 메모리에 접근하는 버그를 방지한다. 이중 해제 : 이미 해제된 메모리를 또 다시 해제하는 버그를 방지 Memory leak 방지 : 더 이상 필요하지 않은 메모리가 해제되지 않고 남아있어 메모리가 부족해 프로그램 중단되는 버그 방지 단점 Garbage Collection 이 발생하는 시점을 예측하기 어려움 할당된 메모리가 해제된 시점을 알수없다. GC가 동작하는 동안에는 다른 동작..
2024.03.15 -
[SPRING] 동시성이슈 해결방법
Inflearn "재고시스템으로 알아보는 동시성 이슈 해결방법" 과 컬리 기술블로그를 보고 정리한 글입니다. 1. 동시성 문제 @Getter @Entity @NoArgsConstructor public class Stock { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private Long productId; private Long quantity; public Stock(final Long id, final Long quantity) { this.id = id; this.quantity = quantity; } public void decrease(final Long quantity) { if (this.quantity ..
2024.03.14 -
[JAVA] 에러(Error) 와 예외 클래스(Exception)
1. 프로그래밍의 오류 종류 컴파일 에러(compile-time error) : 컴파일시에 발생하는 에러 런타임 에러(runtime error) : 실행시에 발생하는 에러 논리적 에러(logical error) : 실행은 되지만 의도와 다르게 동작하는 것 1. 논리적 에러 (Logic Error) 이른바 '버그' 프로그램이 실행하고 작동하는데는 아무런 문제가 없지만, 결과가 예상과 달라 사용자가 의도한 작업을 수행하지 못하게 되어 서비스 이용에 지장이 생기는 에러 개발자는 프로그램의 전반적인 코드와 알고리즘을 체크 할 필요가 있다. 2. 컴파일 에러 컴파일 단계에서 오류 발견하면 컴파일러가 에러 메세지 출력해주는 것 문법 구문 오류(syntax error) 프로그램이 실행 자체가 불가하기 때문에, 그렇게..
2024.03.13