전체 글(164)
-
메서드가 연속으로 실행된다면, 트랜잭션이 중첩되어 데이터가 저장되지 않고 계속 수정되는 거 아냐??
에코노베이션이라는 동아리에서 프로젝트를 수행하며 "메서드가 연속으로 실행되면, 트랜잭션이 중첩되어 데이터가 저장되지 않고 계속 수정되는 거 아냐??"라는 생각을 해본 적이 있다. 이 생각에 대한 과정과 그와 관련된 개념들을 정리해보려고 한다. 먼저, 스프링의 기본 전략을 알아야한다. 스프링의 기본 전략은 트랜잭션 범위의 영속성 컨텍스트 전략, 즉 트랜잭션의 범위와 영속성 컨텍스트의 범위가 같다는 것이다. 이 전략은 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고, 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다. 즉, 같은 트랜잭션과 같은 영속성 컨텍스트를 사용한다는 것이다. 보통 트랜잭션은 service 계층의 @Transactional 어노테이션을 선언해서 트랜잭션을 시작한다. 트랜잭션이 시작되는 데 ..
2023.07.26 -
ArrayList는 어떻게 용량을 관리할까?
이번 방학기간에 Java의 자료구조에 대해서 심도있는 공부를 해볼 예정입니다. 그 첫번째는 ArrayList입니다. 먼저, ArrayList는 List 인터페이스의 구현체입니다. List : 인터페이스 동일한 데이터의 중복을 허용 데이터의 저장 순서가 유지된다 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동으로 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있다. 저장 방식은 해당하는 인덱스에 객체의 주소값을 참조하여 저장한다. List 인터페이스의 특징은 위와 같은 데 이를 통해 알 수 있는 것은 List는 데이터의 중복을 허용하고, 저장 순서가 유지되어야할 때 사용되어야한다는 것입니다. ArrayList ArrayList는 List 인터페이스의 구현체 중 하나입니다. 아래는 ArrayLis..
2023.07.24 -
DTO에 대한 고민
저번 주에는 카카오 테크 캠퍼스 2단계 과제 수행을 기회로 평소 DTO에 관해 고민한 것을 정리해보는 시간을 가졌습니다!! DTO는 Data Transfer Object 즉, 데이터를 전달할 때 사용하는 객체입니다. 먼저, 첫 번째 고민이었습니다.과연 DTO를 사용하면 어떤 이점을 얻을 수 있는 걸까요? 단일 호출 시 여러 매개변수를 일괄처리하여 네트워크의 오버헤드를 줄인다.직렬화의 캡슐화의 이점직렬화된 객체는 외부로부터 데이터를 캡술화하고 보호하는 데 도움이 된다. → 보안 기술 적용하기 좋다.객체를 직렬화함으로써 플랫폼간의 호환성을 높일 수 있습니다.엔티티를 프레젠테이션 레이어에 노출시키지 않을 수 있다. 위의 DTO 이점 중 3번에 대해서는 알고 있었지만, 1번과 2번 장점은 이번에 공부하며 처..
2023.07.17 -
토큰을 사용한 인증과 인가
https://rasony.tistory.com/148 토큰을 사용하는 이유 로그인을 세션으로 구현한다고 하면 주변에서 시선이 느껴지는 경험을 다들 해본 적이 있을 것이다. 그렇다면 쿠키와 세션으로 로그인을 구현하면 도대체 어떤 문제가 발생하길래 다들 이렇게 rasony.tistory.com 안녕하세요 저번 포스팅에 이어서 토큰을 활용한 인증과 인가에 대해서 포스팅해보겠습니다. AccessToken AccessToken은 사용자가 자원에 접근하기 위해서 사용하는 토큰이다. 즉, 사용자가 해당 자원에 접근해도 되는 사용자인 지를 확인할 때 사용한다. 토큰은 stateless 즉 서버가 토큰에 대한 제어권을 가지고 있지 않기 때문에 만약, 토큰을 중간에 탈취당한다면 속수무책으로 당할 수 밖에 없다. 따라서,..
2023.07.10 -
H2 데이터베이스의 Connection mode
H2 데이터베이스 콘솔을 실행시켜보면, Save Settings에 Embedded와 Server라 써있는 것을 본적 있을 것이다. 그렇다면, Embedded와 Server는 각각 어떤 장단점이 있을까??? Embedded 모드 애플리케이션이 JDBC를 사용하여 동일한 JVM 내에서 데이터베이스를 연다. 이 방식의 특징은 다음과 같다. 가장 빠르고 쉬운 연결 모드이다. 한 번에 하나의 가상머신 및 클래스 로더에서만 열릴 수 있다. 다중 스레드 환경에서 동시에 여러 작업을 수행하기가 어렵다. 다중 스레드 환경은 동시에 여러 개의 스레드가 실행되는 환경인 데, 이를 쉽게 말해면 동시에 여러 작업이 처리된다. == 즉, 동시에 여러 요청이 들어온다! 애플리케이션의 스레드가 데이터베이스에 대한 입출력 작업을 수행..
2023.07.04 -
토큰을 사용하는 이유
로그인을 세션으로 구현한다고 하면 주변에서 시선이 느껴지는 경험을 다들 해본 적이 있을 것이다. 그렇다면 쿠키와 세션으로 로그인을 구현하면 도대체 어떤 문제가 발생하길래 다들 이렇게 반응하는 걸까?? 지금부터 쿠키와 세션으로 로그인을 구현하는 방법과 각각의 한계에 대해서 알아보고, 이를 극복할 수 있는 토큰을 사용하여 로그인을 하는 법에 대해서 알아보도록 하겠다. 먼저, 쿠키를 사용하는 방식이다. 쿠키 위키백과에서 쿠키에 대한 정의는 아래와 같다. HTTP 쿠키(HTTP cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일 필자는 쿠키는 데이터를 담는 그..
2023.07.03