복붙노트

[SQL] 자바 : 왜 ResultSet의 직렬화하지?

SQL

자바 : 왜 ResultSet의 직렬화하지?

검색 시간 후에 나는 마침내 java.sql.ResultSet의 직렬화하지 않습니다 어느 쪽도 그렇게 할 수있는 방법이 있음을 깨달았다. 나는 순진하고 필사적 인 시도로 밝혀졌다 직렬화 객체 및 기타 물건 만 가지의 인스턴스 변수로, 목록에 추가했습니다. 내가 사용에 직렬화이다 CachedRowSetImpl 등의 RowSet의 구현을 시도하지만 응답 시간을 증가, 대부분의 아마 그들은으로 반복 된 ResultSet 때문이다. 결론 때까지 또는 결과 집합을 반복하도록 선택하지 않으면, 당신은 네트워크를 통해 포함 된 데이터를 보낼 수 없습니다.

나는 반복하고 데이터 모델 객체와 목록에 내용을 추가해야한다는 대안을 알고 있지만 나는 desperatly이 뒤에 합리적 무엇인지 알고 싶어? 자바의 개발자들은 그 시간에 무엇을 생각 하는가?

해결법

  1. ==============================

    1.지금까지 내가 알고있는 ResultSet의 데이터를 "포함"하지 않습니다. 당신이) (http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next를 호출하면 결과 집합은 데이터베이스에 기본 (JDBC) 연결에서 데이터를 얻을 것이다.

    지금까지 내가 알고있는 ResultSet의 데이터를 "포함"하지 않습니다. 당신이) (http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next를 호출하면 결과 집합은 데이터베이스에 기본 (JDBC) 연결에서 데이터를 얻을 것이다.

    결과 집합 즉 직렬화하고 다른 컴퓨터로 전송 된 경우는 불가능하다. 연결이 사용할 수있을 것입니다.

  2. ==============================

    2.나는 원래 개발자가 무슨 생각에 대답 할 수는 없지만 일부 요소는 명확 인터페이스의 디자인에 노출되어있다.

    나는 원래 개발자가 무슨 생각에 대답 할 수는 없지만 일부 요소는 명확 인터페이스의 디자인에 노출되어있다.

    첫째,의 ResultSet 인터페이스라고하자 메모, 디자이너는 직렬화 여부로 그것을 의도하지 않았다.

    하지만 여전히,의 ResultSet은 일반적으로 직렬화 될 것이 거의 의미가 없다, 그런 강력한 인터페이스입니다. 몇 가지 예.

    이들은 당신이 ResultSet의 직렬화에 대해 생각 할 때 발생하는 비 사소한 질문이 몇 가지 있습니다.

    이 ResultSet의 관계형 데이터베이스, "휴대용"datas 아니 설정에 직접 라이브 연결을 반영하기 위해 최적화 어떻게 든 설계 및 것을 나에게 보인다.

    위의 예제 (업데이트 방법은 본질적으로 작전 없을 것) 직렬화 복원하면 직렬화의 ResultSet 구현이 구현에 제한을 가질 수있는 명확한 표시이다.

    내용은 필연적으로 결과 집합에있는 모든 datas의 페치에 연결되어 (아마도 구현은하지 않도록 프로세스를 최적화 할 수 : 플러스, 결과 집합의 내용을 직렬화하려고 노력하는 것이 "어떻게 든"반복 할 필요성을 의미하는 것이 불가피 전용 데이터베이스에 대한 원시 바이트를 받고, 완전히 구문 분석,하지만 당신은 여전히)를 직렬화하기 위해 datas를 가져올 필요가있다.

    그래서, ResultSet 인터페이스의 디자이너와 대부분의 구현은 직렬화 (또는 직렬화)보다 ResultSet의 (업데이트 방법을 사용하여 DB에 transactionnal 행동과 후기 입에 참여할 수있는 능력)의 라이브 측면에 대해 더 걱정하는 것이 제 생각입니다. 말했다, (업데이트 방법을 더-oping없고, 스트리밍 기능을 사용하지 않도록 설정처럼), 확실히 직렬화 구현하는 것이 가능하다 구현에 충분한 제약 조건을 부여.

  3. from https://stackoverflow.com/questions/24870021/java-why-resultset-is-not-serializable by cc-by-sa and MIT license