본문 바로가기
반응형

Study64

[DB] 트랜잭션 데이터를 저장하기 위해선 DB, File 저장, 등 많은 방법이 존재한다. 이 중에서 가장 많이 사용되는 것이 DB인데 그 큰 이유 중 하나가 트랜잭션이다. 트랜잭션이란? 보통 하나의 비지니스 로직은 하나의 데이터만을 다루는 경우는 적다. 1,2,3 이라는 데이터의 수정이 필요할 때 1과 2는 제대로 수정 됐지만 3이 어떠한 이유로 수정이 되지 않았다면 서비스는 큰 혼란을 맞이할 것이다.. 특히 결제와 같은 시스템은 서비스의 존망이 걸린 문제가 생기지 않을까? 이러한 이유로 1,2,3을 하나의 트랜잭션으로 묶어 관리하게 되는데 만일 과정 중 하나의 문제라도 생긴다면 트랜잭션이 일어나기 이전의 기존 상태로 되돌리게 된다(Roll Back). 반대로 모든 과정이 옳게 동작한다면 DB의 데이터 값을 수정하게 .. 2022. 10. 4.
[Server] 커넥션 풀 커넥션풀이 필요한 이유 WAS는 사용자의 요청에 DB에서 필요한 데이터를 얻게된다. 이 과정에서 DB에 대한 커넥션을 연결해야 하는데 이는 시간이 오래걸리는 무거운 작업이다. 그렇기 때문에 이 커넥션 풀을 사용하게 된다. DB가 커넥션을 얻는 과정 애플리케이션 로직은 DB 드라이버를 통해 커넥션 조회 DB 서버와 TCP/IP 연결(3way handshake) DB에 ID/PWD 전달 인증 후 DB 세션 생성 커넥션 객체 반환 풀 이란? 객체를 보관하는 장소. 한번 생성된 객체 인스턴스를 필요할 때 꺼내 쓰고 사용 후 반환하는 기술. 장점 미리 생성해 놓은 커넥션을 재활용 하기에 복잡한 커넥션을 얻는 과정을 애플리케이션이 시작할 당시에 한번만 수행하면 된다 DB에 무한정 연결이 생성되는 것을 막아주어 DB.. 2022. 10. 4.
[Spring Tip] 엔티티 설계시 주의점 Setter Setter가 열려있다면 프로젝트 사이즈가 커진 뒤 유지보수가 굉장히 어렵다. 모든 연관관계는 지연로딩으로 설정!!! (중요) 즉시 로딩(EAGER)을 사용한다면 연관된 모든 테이블을 로딩해야한다. 따라서 지연 로딩(LAZY)로 설정하고 사용해야 한다. 만약 연관된 엔티티를 함께 조회해야 한다면, fetch join 또는 엔티티 그래프를 사용한다.(n+1문제?) ! ManyToOne은 default가 EAGER, OneToMany는 LAZY. 따라서 ManyToOne은 LAZY로 fetch 값을 변경이 필수적이다. 초기화와 동시에 메모리 할당을 하는것이 'null' 문제에서 안전하다. best practice. 테이블 네이밍 전략 주로 언더바 전략을 사용하고 스프링에서 카멜케이스와 .을 _로.. 2022. 10. 3.
[JPA] 키워드 JPA(java persistence api) 기본 구조 Entity Manager 생성 Entity Manager로 DB 조작 Entity Transaction으로 트랜잭션 관리 Spring과 같이 사용할 때에는 대부분의 작업을 스프링이 알아서 해주기 때문에 매핑 설정과 쿼리를 사용하는 정도의 작업에 사용됨 Entity Manager EntityManagerFactory를 통해 생성 JPQL JPA에서 사용하는 쿼리 영속 컨텍스트 DB에서 읽어온 객체, EM을 통해 생성, 읽어온 객체를 저장하고 있는 일종의 메모리 공간. EntityManager 단위로 영속 컨텍스트 관리 영속 객체를 보관하고 있다가 commit 시점에 DB 값 변경 2022. 10. 2.
[JAVA, JPA, SPRING] 어노테이션 모음집 @SpringBootApplication - 해당 어노테이션이 존재하는 패키지와 하위 패키지를 모두 스캔함. @Entity - DB 테이블과 매핑 대상임을 알림 @Id - primary key @GeneratedValue - auto increment @Column - 매핑할 column과 변수 명이 다를 경우 지정 가능 @ManyToMany @ManyToOne @OneToOne @OneToMany @JoinColumn @Controller @Service - component scan 대상 @Transactional - 쓸 수 있는 옵션이 spring에서 제공하는 어노테이션에 더 많다. 하지만 spring에 종속적이다. class에 어노테이션을 걸면 public 메소드에 모두 적용된다. ReadOnly.. 2022. 9. 30.
[Go] Google OAuth2.0 적용 OAuth 적용 시작하기 전 OAuth에 대한 설명은 아래 포스팅을 봐 주시면 감사하겠다! 2022.06.02 - [Study/Server] - [Server] OAuth 알고 쓰기 [Server] OAuth 알고 쓰기 OAuth란? 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜이다. 아마 다양한 환경에서 알게 모르게 OAuth를 사용한 인증을 해 보았을 것이다. 당장에 생각나는 예시를 들자면 첨부한 roy-jang.tistory.com Google의 OAuth2를 이 포스팅에 작성된 절차를 기준으로 하나씩 살펴볼 것이다. OAuth 적용 절차 1. Client는 OAuth를 사용하기 위해 사전에 Resource Server에게 OAuth에 대한 사용에 대한 동의를 받아 둔다. -> 이 과.. 2022. 8. 29.
반응형