6.1 Simpen file ing server

Kadhangkala obyek binar kudu disimpen ing basis data. Contone, file. Yen file gedhe, banjur paling cukup kanggo nyimpen ing folder kapisah ing disk, lan nyimpen dalan ing database. Tuladha:

c:\db-files\users\12355\avatar.jpg

Lan ing database kita nyimpen mung path relatif kanggo file:

\12355\avatar.jpg

Iku trep kanggo nyimpen path relatif ing database, amarga iku banjur gampang kanggo njaluk URL saka iku:

https://storage.codegym.cc/users/12355/avatar.jpg

Kita mung nempel path relatif menyang jeneng server lan kita wis rampung.

6.2 Simpen gambar langsung ing database

Nanging, yen gambar cilik, bisa disimpen langsung ing database lan diwenehake menyang klien minangka set bita. Kanggo kasus kaya mengkono, SQL duwe jinis data BLOB khusus - Binary Large Object. Utawa, malah ana loro:

  • CLOB - Karakter Obyek Gedhe,
  • BLOB - Binar Obyek Gedhe.

CLOB digunakake kanggo nyimpen teks sing gedhe banget. BLOB kanggo nyimpen data binar, kayata gambar cilik, video, lan liya-liyane.

Tuladha:

@Entity
@Table(name="user")
public class User {

    @Id
    private String id;

	@Column(name = "name", columnDefinition="VARCHAR(128)")
    private String name;

	@Lob
	@Column(name = "photo", columnDefinition="BLOB")
    private byte[] photo;

	// ...
}

Anotasi kasebut @Lobngandhani Hibernate yen Obyek Gedhe disimpen ing lapangan . Lan columnDefinition="BLOB"wis ngomong babagan carane nyimpen kabeh ing database.

Ayo nulis conto kode sing nyimpen pangguna anyar lan foto menyang database:

byte[] imageBuffer = Files.readAllBytes(Paths.get("C:/temp/avatar.png"))

User user = new User();
user.setId("1");
user.setName("Zapp");
user.setPhoto(imageBuffer);

session.persist(user);

6.3 XML lan JSON

Hibernate nduweni dhukungan sing menarik kanggo JSON minangka jinis data. Ngidini sampeyan nyimpen HashMap saka strings minangka obyek JSON siji. Yen DBMS bisa digunakake karo JSON, mula katon kaya iki:

@JdbcTypeCode(SqlTypes.JSON)
private Map<String, String> properties;

Hibernate njupuk care sing obyek jinis Map<String, String>serialized menyang obyek JSON siji. Uga, nalika maca obyek saka database, dadi obyek JSON menyang pesawat saka Map<String, String>.

Hibernate bisa nindakake sing padha karo XML:

@JdbcTypeCode(SqlTypes.SQLXML)
private Map<String, String> properties;