몰랐던거/JAVA & SPRING(7)
-
[Spring JPA] 비관적 락, 낙관적 락 공부하기
비관적 락, 낙관적 락 이란? 비관적 락 비관적 락은 충돌이 일어날 것이다 비관적으로 생각해서 미리 락을 걸어주는 방법입니다. 하나의 트랜잭션이 자원에 접근 시 락을 걸고 다른 트랜잭션이 접근하지 못하게 합니다. 이 때 Shared Lock과 Exclusive Lock 두 가지를 걸 수 있습니다. Shared Lock은 다른 트랜잭션에서 읽기만 가능하고 다른 트랜잭션의 Shared Lock과 자원을 공유합니다. 하지만 Exclusive Lock은 접근할 수 없습니다. Exclusive Lock은 읽기, 쓰기 다 공유하지 않습니다. 장점 충돌이 많은 경우 롤백 횟수를 줄여 성능적인 측면에서 좋습니다. 데이터 일관성과 무결성을 보장하는 수준이 매우 높습니다. 단점 읽기 작업이 많은 로직의 경우엔 동시성이 떨..
2023.04.11 -
[OOP] Visitor 패턴 정리하기
1. 비지터(Visitor) 패턴이란?visitor의 사전적 의미는 방문객, 손님이라는 의미이다.그렇다면 visitor가 어떤 패턴인지에 대해 알아보자.비지터 패턴은 데이터 구조와 데이터 처리를 분리해주는 패턴이다.어떤 데이터를 나타내는 클래스가 있는 경우, 해당 클래스를 처리하는 메서드는 클래스 내부에 있는 것이 편하다.하지만 비지터 패턴은 메서드가 아닌 별도의 클래스로 구현한다. 데이터 구조와 처리를 분리해줌으로써 새로운 처리 방법이 도입이 되었을 때 기존 소스코드 변경없이 새로운 코드 추가만으로 구현 가능하다.그리고 데이터 구조는 컴포지트 패턴을 사용함으로써 단일 데이터와 단일 데이터로 구성되는 집합 데이터를 표현할 수 있다.< Vis..
2022.12.09 -
[OOP] Command 패턴 정리하기
1. 커맨드(Command) 패턴이란?커맨드의 사전적 정의는 명령이라는 의미이다.그럼 커맨드 패턴은 어떤 패턴일까?커맨드 패턴은 하나의 명령(기능)을 객체화한 패턴 즉, 명령을 객체로 만들어서 다루기 위한 패턴이다.이를 통해서 명령을 객체처럼 인자를 통해 전달하거나 메모리, DB 보관할 수 있게 된다.최근 배우는 JPA도 테이블을 객체처럼 다루고 싶어서 만들어진 것과 유사한 것 같다.뿐만 아니라 네트워크를 통해 다른 서버로 전달하여 해당 커맨드를 실행할수도 있다.⇒ 이렇게 되면 명령들을 모아서 한번에 실행하는 배치 실행이나 우선순위가 높은 명령을 먼저 실행하기, 실행된 기능을 되돌리거나 다시 실행하는 Undo/Redo 등이 가능해지는 것과 ..
2022.12.09 -
[OOP] Observer 패턴 정리하기
❓ Observer의 의미 ❓무언가를 관찰하는 사람? 지켜보고 있는 사람?🔭 옵저버 패턴 🔭💡옵저버 패턴은 당신이 여러 객체에게 자신이 관찰 중인 객체에서 발생하는 모든 이벤트에 대하여 알리는 구독 메커니즘을 정의할 수 있도록 하는 행동 디자인 패턴이다.위 그림에서 망원경을 들고 보고 있는 서류들도 있고 그렇지 않은 서류들도 있다. 망원경을 들고 보고 있는 서류들은 저글링을 하는 서류의 실수를 하는 것을 볼 수 있지만 그렇지 않은 서류들은 볼 수 없다.저글링을 하는 서류가 실수한 것을 본 서류들은 각양각색의 반응을 할 것이다. 어떤 서류는 웃을 수도 있고 어떤 서류는 안타까워 할수도 있다.즉, 관찰 중인 객체(저글링하는 서류)에 어떤 이벤트가 발생하면 여러 객체 (망원경든 서류들)에게 알리고 이를 알게된..
2022.11.12 -
[JAVA] JAVA에서의 Data Type
오류가 없고 실행가능한 프로그램을 만들기 위해서 올바른 데이터 타입을 할당했는지 확인해야한다. 컴퓨터 프로그래밍 언어에서 중요한 요소임에도 메모리 공간을 어느정도 이용하고 데이터 유형 간의 차이를 정확하게 모르고 있어서 이번 기회에 정리를 해보고자 한다.모든 프로그래밍 언어에는 언어마다의 Data Type도 있고 할당하는 메모리의 크기가 다를 수 있지만 현재 필자가 사용중인 언어를 기준으로 JAVA에서의 Data Type들을 알아보고자 한다.JAVA에서의 Data Type자바에는 크게 두 가지의 데이터 타입 범주가 존재한다.Primitive Data TypeReference(Non-Primitive) Data Type먼저 Primitive Data Type에 대해서 알아보자.Primitive Data T..
2022.11.12 -
[OOP] Proxy 패턴 정리하기
Proxy(프록시)의 뜻이 뭘까?뭔가를 대신해준다? 누군가를 대체해준다? 프록시 패턴이란?프록시는 다른 객체에 대한 대체 또는 자리표시자를 제공할 수 있는 디자인 패턴이다. 원래 객체에 대한 접근을 제어하므로, 요청이 원래 객체에 전달되기 전 또는 후에 무언가를 수행할 수 있도록 함. 그렇다면 프록시 패턴은 어떤 문제들을 해결할 수 있을까?프록시 패턴이 해결할 수 있는 문제특정 데이터베이스로의 쿼리 응답이 굉장히 느리다고 가정하자.이 경우 여러 클라이언트들이 직접적으로 DB로 접근해서 쿼리를 날린다면 정말 더 느려질 것이다.하지만 만약 아래와 같이 프록시 서버를 둔다면,프록시 서버에서의 캐싱을 이용해서 DB로의 접근을 줄이고 프록시 서버에서 처리를 해줘 성능 향상을 도모할 수 있고 DB는 DB의 기능만을..
2022.11.10