BackEnd/Database 14

DB 락

서로 다른 세션에서 동시에 같은 데이터를 수정하게 되면 치명적인 오류가 발생한다. 이러한 문제를 방지하기 위해 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안에는 커밋이나 롤백 전까지 다른 세션에 서 해당 데이터를 수정할 수 없게 막아야 하는데 이러한 기능을 하는게 DB 락 이라는 개념이다.   set autocommit false; update member set money=500 where member_id = 'memberA'; 세션1에서 락을 획득하고 money를 500으로 변경하고 커밋을 안했다.   SET LOCK_TIMEOUT 60000; set autocommit false; update member set money=1000 where member_id = 'memberA'; 이때 세션..

BackEnd/Database 2025.01.19

커넥션 풀 / DataSource

커넥션 풀 데이터베이스 커넥션을 획득하기 위해서는 DB드라이버가 DB와 TCP/IP커넥션을 연결한다. DB 드라이버는 TCP/IP 커넥션이 연결되면  ID/PW와 기타 정보를 DB에 전달한다. 그 후 DB 내부인증이 완료되면 DB세션이 생성되고  DB드라이버가 커넥션 객체를 생성하여 클라이언트에 반환한다. 하지만 이러한 방법은 과정도 복잡하고 시간도 오래걸린다. 이러한 문제를 해결해주는게 커넥션 풀이다.  DB 드라이버는 필요한만큼 커넥션을 미리 생성하여 풀에 보관한다. 이때 커넥션들을 모두 TCP/IP로 DB와 연결된 상태이다.  따라서 클라이언트는 필요할때마다 커넥션을 생성하는 것이 아닌, 커넥션 풀에서 커넥션을 객체 참조로 가져다 쓰기만 하면된다. 사용된 커넥션들은 다시 커넥션 풀로 이동하여 다시 ..

BackEnd/Database 2025.01.13

데이터베이스 연결, JDBC개발 - 등록, 조회, 수정 ,삭제

서버와 데이터베이스를 연결하는 방법에 대해서 공부했다. 사용된 데이터베이스 : H2    데이터베이스에 접근하기위해 필요한 정보들을 상수로 만들어 관리package hello.jdbc.connection;public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/test"; public static final String USERNAME = "sa"; public static final String PASSWORD = "";}   데이터베이스에 연결하려면 JDBC가 제공하는 DriverManager.getConnection(..) 을 사용하면 된다.이렇게 하면 라이브러리..

BackEnd/Database 2025.01.12

JDBC란 무엇인가

JDBC란? JDBC등장 전에는 다음과 같은 어려움이 존재했다. 1. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함 께 변경해야 한다. 2. 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습해야 한다.  JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. - 위키백과  개발자는 사용되는 데이터베이스가 변경되어도 JDBC 구현 라이브러리만 변경하면 된다. 따라서 다른 종류의 데이터베이스로 변경해도 애플리케이션 서버의 사용 코드를 그대로 유지할 수..

BackEnd/Database 2025.01.11