Ich möchte riesige Binärdaten in einer Datenbank speichern. Clients sollten in der Lage sein, Metadaten wie Inhaltsgröße, Erstellungsdatum usw. zu überprüfen und den Inhalt zu streamen.So streamen riesige Daten von der DB zum Client
Mit JPA sind persistente Metadaten unkompliziert.
@Entity
public class MyData {
@Id
private String name;
private Timestamp creationDate;
private long contentSize;
Aber wie man den Inhalt modelliert? Wenn ich
byte[] content;
dann der gesamte Inhalt im Speicher werden muß verwenden würde gehalten, was unerwünscht ist.
Mit Hibernate, die folgenden Werke, aber auch andere JPA-Provider, wie zB OpenJPA, beklagen, dass content
weder persistent noch @Transient
kommentiert.
@Lob
@Basic(fetch=FetchType.LAZY)
private java.sql.Blob content;
Frage: Gibt es eine tragbare Lösung, die für das Streaming von ohne die Notwendigkeit ermöglicht es den gesamten Inhalt in einem Byte-Array zu halten?
Tragbare? Nee. Nichts in der JPA-Spezifikation dafür. Alle JPA-Anbieter haben ihre eigenen unterstützten Typen und unterstützten Möglichkeiten, sie zu handhaben. Wie Sie sagen "Byte []" ist kein geeigneter Typ, aber auch nicht Blob, da es an einen vorhandenen JDBC-Treiber gebunden ist. Etwas wie Reader oder InputStream macht mehr Sinn ... wenn dein JPA-Provider sie unterstützt – DN1