• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

안녕하세요 connection부분 질문드립니다.

21.06.08 16:19 작성 조회수 134

0

instance가 ConnectionString를 가져다 줬다는게 이해가 안가서 문의드립니다.

뒤쪽에 Open으로 뜨는데 connection을 호출하지도 않는데 왜 Open이 되는지 이해가 가지않습니다.

instance를 가져오면 자동으로 connection이 Open되는 것인가요?

디버그해봐도 connection이 언제 이루어 지는지 알 수가 없습니다. IDbConnection Connection가 언제 실행되는 건지알 수 있을까요?

MakeConnection()이 있을때는 직관적이었는데요.

혼자 생각하기에는 MakeConnection()이 있을 때는 프로그램시작하자마자 Open이되는거고 MakeConnection()을 지우고 그냥 getter setter만 있을 때는 

처음에는 Open 상태가 아니고 Connection이 필요할 때만 즉 Form1에서 호출할 때 검사해서 Open이 아니면 체크후 Open해주는 것인가요??

그래서 버튼 클릭해서 Connection에 접근해 Open을 했고 그이후에 MakeConnection에서 다시 Open()해 중복되기 때문에 해당 내용을 지운건가요~?

답변부탁드립니다!

답변 2

·

답변을 작성해보세요.

1

디자인 패턴에서 싱글턴 패턴을 이해하면 모든 것이 해결될 것 같습니다. 흔히 우리가 new NewClass()로 인스턴스를 만드는데 이것은 생성자를 호출하고 있는 것입니다. 싱글턴 모델은 생성자가 private로 선언되었기 때문에 외부에서는 호출할 수 없습니다. 다만 static으로 정의된 instance()를 호출하면 인스턴스를 반환하는데 이것은 내부에서 생성자를 호출하고 생성된 인스턴스를 돌려주기 때문이죠. 인스턴스가 생성될 때 connection이 없으면 그 때 connection을 만들어서 open()하고 이를 돌려주고 있습니다. 인터넷 등에서 싱글턴 패턴을 좀더 찾아보시면 이해가 될 것으로 생각됩니다.

0

손기명님의 프로필

손기명

질문자

2021.06.11

싱글톤 패턴이 객체 하나를 static으로 생성해 이것 하나로 프로그램전체에서 공유해 사용하는 것으로 생각하고 있습니다.

다만 제가 궁금한점은 인스턴스가 생성될 때 connection이 없으면 생성한다고 해주셔서 디버그를 돌려보았습니다. 그런데 인스턴스를 생성할때에 Close상태이고 버튼클릭때 state를 검사하지않으면 연결을 확인할 수 없는 상태여서 혹시 버튼을 클릭해서 Form1폼에서 버튼을 클릭해instance.Connection.state을 해서 접근할 때에 Open이 되는 것인지 궁금해서 문의드립니다. 즉 프로그램 실행해서 인스턴스 생성시에 Open되는 것이 아니라 나중에 Connection에 접근할 때 Open이 되는 것이 아닌지 궁금해서 문의드립니다.