2013-01-23 5 views
0

JDBC을 사용하여 INSERT, UPDATE, DELETE 및 ...을 사용하는 클래스가 있습니다. 여러 스레드가이 클래스를 사용할 수 있습니다 (공유 스레드가 아닌 각 스레드는이 클래스의 새 개체를 사용함).) 동시에 데이터베이스에 액세스 할 수 있습니까?여러 스레드가 JDBC를 통해 동시에 데이터베이스에 액세스 할 수 있습니까?

+0

데이터베이스에 따라 다르지만 각 스레드가 자체 연결을 요청하면 요청을 처리 할 수있을 때까지 DB 엔진이 이러한 요청을 거부/차단할 가능성이 높습니다. 그것은 또한 DB 엔진 기능에 도달 할 것이고, 트랜잭션에 대한 지원처럼 생각할 것입니다. – MadProgrammer

답변

2

예, 가능합니다.

각 새 객체가 동일한 JDBC 연결 객체를 공유하면 데이터베이스 액세스 속도가 느려집니다.

각 새 객체에 고유 JDBC 연결 객체가있는 경우 데이터베이스 액세스 속도가 느려지지 않습니다. 그러나 이렇게하면 데이터베이스에 여러 개의 연결이 생성되어 데이터베이스의로드가 증가합니다.

1

JDBC는 Java 코드를 통해 SQL 서버와 통신하는 방법에 대해서만 표준입니다. 다중 쓰레드는 JDBC에 아무런 영향을 미치지 않습니다. 코드가 쓰레드에 안전하고, 필요할 때 등 트랜잭션이 생성되면 모두 괜찮을 것입니다.

1

JDBC는 클래스가 아니므로 표준입니다. 그러나 데이터베이스 (일반적으로 컨테이너가 관리하는 연결 풀)에 대해 여러 연결을 가질 수 있습니다. 각 스레드는 연결을 가져오고 데이터베이스에서 작업을 실행합니다. 트랜잭션의 사용은 데이터 일관성 및 무결성을 보장합니다.

+0

"컨테이너에 의해 관리되는 연결 풀"은 무엇을 의미합니까? – Soheil

+1

응용 프로그램이 WebLogic, WebSphere, JBoss와 같은 JEE 응용 프로그램 서버에서 실행되는 경우 서버에서 DB 연결 풀을 제공합니다. 즉, 서버에서 여러 개의 DB 연결을 만들고이를 수행해야하는 클라이언트에 제공합니다. DB에 대한 조작. 클라이언트가 더 이상 연결을 필요로하지 않으면 서버는 해당 연결을 다른 클라이언트에 전달할 수 있습니다. 처음부터 연결을 설정하는 것은 무거운 작업이므로이 방법이 더 효율적입니다. – Bogdan

+0

좋은 정보, 고맙습니다. – Soheil

관련 문제