생각의 표현들

DB

DB 락

너 Key 갖고 있어?? DB 세션이 트랜잭션을 시작하고 데이터를 조작 후 커밋을 하지 않은 상태에서 다른 DB세션에서 동시에 데이터를 수정하면 원자성 문제가 생깁니다. 이런 문제를 해결하기 위해 데이터에 락을 걸어 처음 접근한 세션이 데이터를 수정하는 동안 다른 세션에서 접근할 수 없게 해야 합니다. 데이터에 Key를 소유한 세션만 데이터 수정이 가능합니다. 접근을 하면 Key를 흭득하고 Commit 또는 Rollback을 하면 Key를 반환합니다. 조회시 Lock 일반적인 조회는 락을 사용하지 않습니다. 하지만 트랜잭션 종료 시점까지 해당 데이터를 다른곳에서 변경하지 못하도록 강제로 막아야 할 때 사용합니다. 조회시 락 방법 SELECT * FROM member where member_id ='tes..

DB

트랜잭션

데이터베이스에서 트랜잭션이란 하나의 거래를안전하게 처리하도록 보장해주는 것을 뜻합니다. 데이터베이스의 트랜잭션에서는 중요한 것들이 있습니다. 트랜잭션 ACID 원자성 : 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. 일관성 : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야한다. (데이터 베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.) 격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 트랜잭션 격리 수준 : 동시에 같은 데이터에 접근하지 않게 하기 위한 단계 지속성 : 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. (문제시 복구 가능해야함) 트랜잭션은 원자성, 일관성, 지속성은 보장하지만 ..

Java

Java - 타입추론 Var

타입추론은 타입이 정해지지 않은 변수에 대해 컴파일러가 변수의 타입을스스로 찾아낼 수 있도록 하는 기능입니다. 따라서 Var는 컴파일러가 타입을 유추할 수 있도록 반드시 데이터를 초기화 해줘야 합니다. Java10부터 var를 지원하였고, 11부터는 람다에서도 var를지원합니다. 장점 빠른 개발이 가능합니다. ForEach에서 사용하여 타이핑이 간결해집니다. 변수의 이름에 집중할 수 있습니다. 주의사항 초기화를 해주어야합니다. null은 들어갈 수 없습니다. 로컬 변수에서만 사용 가능합니다. var를 사용하면 타입을 유추할 수 없기 때문에 네이밍을 적절히 잘해야 합니다.

DB

DataSource란?

커넥션을 흭득하는 방법을 추상화 한것입니다. DB 접근 방법을 변경해도 코드 손보지 않고 알아서 다 처리해 줍니다. 스프링의 장점중 하나입니다. 커넥션을 흭득하는 방법 DriverManager 매번 연결시마다 커넥션을 생성합니다. Connection Pool 미리 만들어 놓은 커넥션 재사용 이 두가지를 모두 추상화 시킨것이 DataSource입니다. 자바는 DataSource 인터페이스를 통해 커넥션을 조회하고 사용할 수 있게 도와줍니다. DataSource의 커넥션풀은 main 스레드가 아닌 별도의 스레드가 생성합니다. (속도를 향상시키기 위해) 따라서 애플리케이션 로직은 DataSource만 의존해서 개발을 하면 다른것을 신경쓰지 않아도 됩니다.

Sol b
'분류 전체보기' 카테고리의 글 목록 (24 Page)