데이터베이스와 인터페이스하는 정적 메소드를 사용하여 잠재적 인 문제점은 무엇입니까?
-
12-11-2019 - |
문제
MVC3 / .NET 응용 프로그램에 대한 데이터베이스 액세스를 수업하고 있습니다.
클래스는 정적이며 일반적인 DB 쿼리 - "getColumnBvalueforColumna ()"과 같은 모든 종류의 모든 종류의 모든 종류의 재료뿐만 아니라 훨씬 복잡한 쿼리를 제공합니다.주어진 솔루션 및 도메인에 대해 잘 알고 있거나 최적화되었습니다.
클래스를 정적으로 보는 것으로 비록, 이것이 나쁜 아이디어 (멀티 스레딩의 맥락에서)가 있는지에 대해 잊어 버린 기억을 잊어 버렸습니다. 그리고 나는 느낌을 흔들 수 없습니다.
이 종류의 클래스를 정적으로 유지하거나 각 데이터베이스 호출에 대해 인스턴스화해야합니까?
해결책
이런 종류의 계급을 정적으로 유지하는 것이 좋습니다. 각 데이터베이스 호출에 대한 인스턴스화?
응용 프로그램의 레이어 사이의 약한 결합, 해당 레이어의 재사용 가능성, 단위 테스트는 위의 것 중 하나를 수행해서는 안됩니다.당신은 추상화로 일해야합니다.
해당 것들을 상관하지 않으면 정적 방법이 괜찮습니다.정적 방법으로 작업 할 때 조심해야 할 유일한 것은 Reentrant 스레드 안전을 위해 모든 공유 상태에 의존하지 마십시오.모든 경우 명령문을 사용하여 데이터베이스 연결 및 명령과 같은 모든 IDisposable 리소스를 적절하게 폐기하십시오.
다른 팁
이 종류의 클래스를 정적으로 유지하거나 각 데이터베이스 호출에 대해 인스턴스화해야합니까?
이들은 단 두 가지 옵션이 아닙니다.
클래스는 이 아닙니다 정적으로 : static 몇 가지 중요한 이점을 포기합니다 객체 지향 프로그래밍의 경우 실제로 아무 것도 얻지 못합니다.