質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

1回答

3995閲覧

Cursor<T>とList<T>の違いについて

King_of_Flies

総合スコア382

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

0クリップ

投稿2019/04/05 02:17

お疲れ様です。

javaの以下の実装を性能の観点で変更したく
Listに持っていた検索結果をCursor型に持つように変更しました。

上記変更によりsize()で出力していた検索結果の総件数の出力ができなくなり、
代替案を模索しています。

変更前

java

1//Repository.findAllはInterface経由でmybatisによるクエリ検索結果の全件を取得している。 2List<T> resultList = Repository.findAll() 3 4//Log.Logはコンソール上にfindAllで取得した件数を出力する。 5Log.log("取得件数:",resultList.size()) 6

変更後

java

1Coursor<T> resultCursors = Repository.findAll(); 2 3//やりたいこと。実際にはCursorにはsize()が存在しないため、検索件数が出ない。 4//Log.log("取得件数:",resultCursors.size())

ご力添え頂けますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2019/04/05 02:50

Repository.findAll()が返すオブジェクトがList<T>からCursor<T>になるように Repository.findAll()の中身を変更したんですよね?
King_of_Flies

2019/04/05 04:11

xml内の戻り値の型は<T>で変更なしであるため、 変更を加えたのは、Interface内で定義している List<T> findAll();をCursor<T> findAll();としたくらいです。 xmlは <select id ="findAll" resultType="T"> select a as aHoge ,b as bHoge ,c as cHoge from HogeTable </select> で変更はありません。
guest

回答1

0

javaの以下の実装を性能の観点で変更したく

Listに持っていた検索結果をCursor型に持つように変更しました。

Javaには返り値によるオーバーロードはありませんので、Repository.findAll()の結果をList<T>で受けようがCursor<T>で受けようが、同じ結果を返すと思われます。

Cursor<T>を活かそうとするなら、コードの書き方そのものに変更が必要になるかと思います。

投稿2019/04/05 02:24

maisumakun

総合スコア145192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

King_of_Flies

2019/04/05 04:14

性能検証者の話によると、 List<T>では取得した件数分、インスタンスを生成するため、 Cursor<T>とすることで改善が見込めるという回答でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問