강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

11)ADO.Net(Insert) [2025-01-19업데이트]

using (SqlConnection ~)을 하는 이유가 뭔가요?

작성

·

12

0

using문은 영역 밖으로 나가면 Dispose가 호출되는것으로 알고 있습니다.

 

db연결은 전역적으로 한번 만들어 놓으면 그걸 계속 사용하면 될것 같은데 using으로 사용할때만 임시로 만들고 사용후에 제거할 필요가 있는걸까여?

 

 

답변 2

1

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

말씀하신 것 처럼 using(SqlConnection~)을 사용하면

자동으로 SqlConnection.Dispose()가 호출됩니다

 

MSDN문서:

https://learn.microsoft.com/ko-kr/dotnet/framework/data/adonet/sql-server-connection-pooling?redirectedfrom=MSDN

개인적인 설명:

데이터베이스 작업을 완료하면 Close() method를 호출하여 연결을 닫아야 합니다.

그러나 using문을 사용하면 자동으로 Dispose()와 함께 자동으로 연결을 닫습니다.

Close method호출과 함께 연결은, Connection Pool로 반환됩니다.

중요한 것은 DB연결이 무한하지않고,제한적이고 비교적 비용이 많이 듭니다.

그렇기에 using문이 사용됩니다.

Q.또한 db연결은 전역적으로 한번 만들어 놓으면 그걸 계속 사용하면 될것 같은데

A.사용자의 페이지 요청을 처리함에 Thread가 사용됩니다.

그 후 ASP.NET thread pool에게 반환합니다.

중요한 것은 DB연결을 각각의 Thread에서 요청 및 처리하기에

여러 요청을 동시에 처리가 가능합니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 사과일광욕님.

using 문을 통해 SqlConnection 객체를 사용하는 이유는 리소스 관리를 자동화하여 코드의 안정성과 효율성을 높이기 위함입니다. using 문은 해당 블록이 종료되면 자동으로 Dispose 메서드를 호출하여 해당 객체의 모든 비관리 리소스를 정리합니다. 이렇게 함으로써 데이터베이스 연결을 명시적으로 닫고 자원을 해제할 수 있습니다.

주요 이유는 다음과 같습니다:

  1. 리소스 해제: 데이터베이스 연결은 제한된 시스템 리소스를 소비합니다. 이를 장시간 유지하면 시스템이 불안정해질 수 있습니다. using 문을 사용하면 연결이 자동으로 해제되므로 리소스를 효율적으로 관리할 수 있습니다.

  2. 안정성: 예외가 발생하더라도 finally 블록에서 Dispose가 호출된 것과 동일한 효과를 보장합니다. 이는 예외가 있더라도 연결이 안정적으로 닫히도록 합니다.

  3. 간결한 코드: 명시적인 호출 없이 직접 Dispose를 호출하는 것보다 코드가 간결해집니다.

전역적으로 연결을 유지하며 사용하는 방법도 있긴 하지만, 이는 대체로 서버 자원 낭비를 초래할 수 있으며 모든 연결에서 고유한 상태를 유지해야 하는 웹 응용 프로그램에서는 비효율적일 수 있습니다. 따라서 필요한 순간에만 연결을 열고 닫는 것이 일반적으로 권장됩니다.

관련된 내용으로 비슷한 질문에 대한 토의를 보실 수 있는 링크를 아래에 첨부합니다:
- SqlConnection관련 질문: SqlConnection의 사용법 및 deprecated 메시지에 대한 논의입니다.
- sqlConnection 질문: SqlConnection 사용 시 발생할 수 있는 일반적인 이슈에 대한 답변을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

질문하기