웹에서 일부 문서를 가져오고 있으며 그 중 많은 문서가 이진 파일 (실행 파일, PDF 등)입니다. 자바에서는 데이터베이스에 저장하기 전까지 바이너리 데이터를 보관할 올바른 유형은 무엇입니까? 이 문자열을 사용할 수 있습니까?Java에서 이진 데이터를 관리하는 가장 좋은 유형은 무엇입니까?
답변
사용되고 볼 이유 byte
S
byte[]
배열. 자바 문자열은 일반적인 바이너리 데이터를위한 좋은 컨테이너가 아니다.
Apache 라이브러리 commons-io에는 바이트 및 스트림을 처리하기위한 유용한 유틸리티 클래스가 있습니다.
IOUtils.toByteArray(InputStream)
ByteBuffer 자바 4 (1.4) 이상 사용할 Java NIO의 일부로서 소개되었다. 특수한 시나리오에서는 byte []를 사용하는 것보다 성능 이점이 있습니다. 또한 도움이되는 편리한 메소드가 있습니다. 하지만 바이트는 일반적으로 널리 쓰이고 API에서 더 많이 사용되며 거의 항상 잘 수행되기 때문에 바이트 []를 사용합니다.
는 바이트 배열 (byte [])의 InputStream 또는 (예를 들어,이 InputStream)를 사용하여 그것을 FileInputStream
단순화 된 바이트 수준 조작이 필요한 경우 byte[]
또는 ByteBuffer
을 사용하십시오.
엄밀히 말하면 은 일 수 있지만 문자 인코딩과 관련된 함정이 많기 때문에 문자열을 사용하지 말아야합니다.
작은 데이터의 경우 byte[]
을 사용하지만 이진 파일 (데이터베이스 BLOB에 저장 됨)의 경우 임시 파일을 InputStream
으로 사용해야합니다. JavaEE는 업로드 된 파일에 대해서도이 작업을 수행합니다. 서버 성능이 byte []에 대한 메모리를 낭비하는 것은 좋지 않습니다. 각 200MB에 대해 10 개의 PDF 파일을 제공하는 웹 응용 프로그램을 상상해보십시오. 서버는 webapp 용으로 2GB 이상의 RAM이 필요합니다.
또한 InputStream을 사용하면 JDBC가 데이터베이스에 데이터를 스트리밍 할 수 있습니다 (MySql이 아닌 대부분의 JDBC 드라이버의 경우 클라이언트와 서버에 대해 두 번 더 메모리에 데이터를 저장합니다).
Apache Commons FileUpload 및 setBlob()은 PreparedStratement
입니다.
파일을 데이터베이스에 직접 저장하지 마십시오. 대신 파일 시스템에 저장하고 데이터베이스의 파일 경로를 저장하십시오. 그것이 바로 파일 시스템입니다. 바이너리 파일을 데이터베이스에 저장하면 성능 문제가 발생합니다.
- 1. java에서 웹 컨트롤러에 대한 액세스를 관리하는 가장 좋은 방법은 무엇입니까?
- 2. 서버로부터받은 데이터를 저장하는 가장 좋은 데이터 저장 유형은 무엇입니까?
- 3. Java에서 URL에 데이터를 게시하는 가장 좋은 방법
- 4. 이진 데이터를 문자 데이터로 변환하는 가장 좋은 방법은 무엇입니까?
- 5. 통화로 번호를 관리하는 가장 좋은 방법은 무엇입니까?
- 6. 위치를 관리하는 가장 좋은 방법은 무엇입니까?
- 7. 서식 상태를 관리하는 가장 좋은 방법은 무엇입니까?
- 8. NHibernate에서 세션을 관리하는 가장 좋은 방법은 무엇입니까?
- 9. Node.js에서 시간을 관리하는 가장 좋은 방법은 무엇입니까?
- 10. 두 UI를 관리하는 가장 좋은 방법은 무엇입니까?
- 11. 세션 변수를 관리하는 가장 좋은 방법은 무엇입니까?
- 12. Java에서 JavaScript를 실행하는 가장 좋은 방법은 무엇입니까?
- 13. Java에서 ArrayList를 "감싸는"가장 좋은 방법은 무엇입니까?
- 14. git 저장소를 관리하는 가장 좋은 방법은
- 15. PHP 코드를 저장하기위한 가장 좋은 mysql 데이터 유형은 무엇입니까?
- 16. 데이터베이스 변경을 관리하는 가장 좋은 방법
- 17. 임의의 바이너리 데이터를 나타내는 데 적합한 데이터 유형은 무엇입니까?
- 18. Java에서 스레드를 실행하는 가장 좋은 방법은 무엇입니까?
- 19. Java에서 가장 좋은 파일 입출력 옵션은 무엇입니까?
- 20. Java에서 직렬화를 사용하는 가장 좋은 방법은 무엇입니까?
- 21. Java에서 이미지를로드하고 캐시하는 가장 좋은 방법은 무엇입니까?
- 22. C#에서 이진 데이터를 파일에 쓰는 가장 좋은 방법
- 23. 프로그램간에 데이터를 저장하는 가장 좋은 방법은 java에서 실행됩니까?
- 24. DB없이 java에서 시퀀스를 관리하는 방법은 무엇입니까?
- 25. 파일/항목 관계를 관리하는 가장 좋은 방법은 무엇입니까?
- 26. C에서 이진 연산자의 반환 값의 유형은 무엇입니까
- 27. Java에서 이진 데이터를 다시 쓰는 방법
- 28. 로더가 관리하는 쿼리를 연기하는 가장 좋은 방법은 무엇입니까?
- 29. 한 사람이 관리하는 보드 게임을 프로그래밍하는 가장 좋은 방법은 무엇입니까?
- 30. SimpleCursorTreeAdapter를 사용하여 Android에서 커서를 관리하는 가장 좋은 방법은 무엇입니까?