私はウェブからいくつかのドキュメントを入手していますが、その多くはバイナリファイル(実行可能ファイル、PDFなど)です。 Javaでは、データベースに保存するまでバイナリデータを保持する正しい型は何ですか?このためにStringを使用できますか?Javaでバイナリデータを管理するにはどのようなタイプが最適ですか?
答えて
に使用されて参照理由であるbyte
の
byte[]
の配列。 Java文字列は、汎用バイナリデータのための良いコンテナではありません。
Apacheライブラリcommons-ioには、バイトとストリームを扱うための素晴らしいユーティリティクラスがいくつかあります。
IOUtils.toByteArray(InputStream)
ByteBufferは、Java 4(1.4)以降で利用可能なJava NIOの一部として導入しました。特別なシナリオでは、バイト[]を使用するよりもパフォーマンス上の利点があります。便利な便利な方法もいくつかあります。しかし、私はまだバイト[]を使用しています。なぜなら、それは広く知られており、APIでより一般的であり、ほとんど常に十分に機能しているからです。
あなたはバイト配列(byte [])またはのInputStream(例えばするByteArrayInputStream)を使用し、それはFileInputStream
単純なバイトレベルの操作が必要な場合は、byte[]
またはByteBuffer
を使用してください。
厳密に言えば、にはという文字列を使用できますが、文字エンコードに関連する落とし穴がたくさんあるので、文字列を使用しないでください。
少量のデータを使用する場合はbyte[]
を使用しますが、バイナリファイル(データベースBLOBに格納する場合)にはInputStream
という一時ファイルを使用する必要があります。 JavaEEはアップロードされたファイルに対してもこれを行います。サーバーパフォーマンスがbyte []のメモリを浪費するのは良くありません。 PDFファイルを約200MBごとに配信するwebappを想像してみてください。サーバーには、Webアプリケーション用に2GB以上のRAMが必要です。
また、InputStreamを使用すると、JDBCがデータベースにデータをストリーミングできるようになります(MySqlではなく、ほとんどのJDBCドライバで、クライアントとサーバーで2回以上メモリ内のデータを保持します)。
Apache Commons FileUploadとsetBlob()はPreparedStratement
です。
ファイルをデータベースに直接保存しないでください。代わりにそれらをファイルシステムに保存し、ファイルのパスをデータベースに保存します。これがファイルシステムの目的です。バイナリファイルをデータベースに格納すると、パフォーマンスの問題が発生します。
- 1. ゲームエンジンでコンポーネントを最適に管理するにはどうすればよいですか?
- 2. JavaではC++のようなリソース管理が可能です
- 3. タイプ「最短」のライフタイムを管理するにはどうすればよいですか?
- 4. Rパッケージにはどのようなライセンスが最適ですか?
- 5. 可変長のビット列のバイナリデータを最適に検索するにはどうすればよいですか?
- 6. jQuery.ajax() - どのようにタイムアウトを処理するのが最適ですか?
- 7. SQL Serverの最適なソース管理は何ですか?
- 8. Java Persistance APIはどのようにバイナリデータを処理しますか?
- 9. DRFでカスタムシリアライザを管理する最適な方法は何ですか
- 10. RailsアプリケーションでマルチページJavaScriptを管理する最適な方法は何ですか?
- 11. 大規模なJavaデータ配列の処理と管理を最適化する
- 12. Javaでのプロトコル処理に最適なライブラリですか?
- 13. ウェブサイトのユーザー写真を管理する最適な方法は何ですか?
- 14. データベースアクセスアプリケーションの並行性を管理する最適な方法は何ですか?
- 15. ビジター管理システムの最適なソリューションですか?
- 16. Pythonでは、スレッドの作成と管理にはどのような方法が適していますか?
- 17. HTMLでテーブルを最適に管理する方法は?
- 18. ARCでこのUIBarButtonItemのメモリを適切に管理するにはどうすればよいですか?
- 19. Herokuはどのようなサイト/アプリに最適ですか?
- 20. SBT管理のスカラプロジェクトをMaven管理のJavaプロジェクトとマージするにはどうすればいいですか?
- 21. JavaScriptイベントオブジェクトを再ディスパッチできるようにするには、どのような方法が最適ですか?
- 22. どのバージョン管理ツールが最後の 'N'コミットだけを格納するのに最適ですか?
- 23. アンドロイドでのローカルキャッシュにはどのような方法が最適ですか?
- 24. リフレクトまたはサイクリックマージの処理には、どのバージョン管理ツールが最適ですか? SVN、Git?
- 25. アプリケーションのソース管理でPythonのバージョンを管理するにはどうすればよいですか?
- 26. PhoneGap iOS/Androidプロジェクトをどのように処理し、適切にバージョン管理するのですか?
- 27. どのようにして、プロジェクトが、管理対象のEnitymanagerライフサイクルではなく、コンテナ管理によるライフサイクルを使用するようにしますか?
- 28. DNS管理に最適なオプション
- 29. Javaコードの最適化を開始するにはどうすればよいですか? - CPUが100%です
- 30. HTTP POST、GETなどに最適なJavaライブラリは何ですか?