码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 孙卫琴的《精通JPA与Hibernate》的读书笔记:通过JPA处理Blob和Clob类型的数据


    在持久化类中,二进制大对象可以声明为byte[]或java.sql.Blob类型;字符串大对象可以声明为java.lang.String或java.sql.Clob类型。

    java.sql.Blob和java.sql.Clob是JDBC API中的接口。在默认情况下,Blob和Clob接口的实现会使用SQL定位器,这意味着当程序从数据库加载Blob类型或Clob类型的数据时,实际上加载的仅是Blob类型或Clob类型的数据的逻辑指针。接下来程序需要通过Blob.getBinaryStream()或Clob.getCharacterStream()方法得到Blob或Clob类型的数据的输入流,才可以真正读取到大对象数据。

    对于以下程序代码:

    Customer customer=entityManager.find(Customer.class, 
                                         Long.valueOf(1); //第1行
    Blob image=customer.getImage();  //第2行
    InputStream in=image.getBinaryStream();  //第3行
    
    • 1
    • 2
    • 3
    • 4

    第2行的image变量引用的只是数据库中Blob类型的数据的逻辑指针。第3行通过image.getBinaryStream()方法得到Blob类型的数据的输入流,才可以真正读取到数据库中的大对象数据。

    org.hibernate.LobHelper接口提供了一系列用于创建Blob和Clob对象的方法:

    • public Blob createBlob(byte[] bytes)
    • public Blob createBlob(InputStream stream, long length)
    • public Clob createClob(String string)
    • public Clob createClob(Reader reader, long length)

    Hibernate的Session接口的getLobHelper()方法返回一个LobHelper对象。

    假定Customer类的image属性为java.sql.Blob类型,在MySQL数据库中CUSTOMERS表的IMAGE字段为BLOB类型。在Customer类中,映射image属性的代码如下:

    @Column(name="IMAGE")
    @Type(type="blob")
    private Blob image;
    
    • 1
    • 2
    • 3

    此外,JPA API还提供了一个@Lob注解,用来映射Blob或Clob类型的属性。因此,也可以用@Lob注解来映射image属性:

    @Column(name="IMAGE
    • 相关阅读:
      Linux环境下Qt应用程序安装器(installer)制作
      使用MATLAB进行傅里叶变换
      排序算法基础篇
      《国际法》配套练习题及答案
      SAAS-HRM系统概述与搭建环境
      【问题】MobaXterm Sftp 超时自动退出
      功率放大器在超声导波中的应用有哪些
      JUC并发编程——线程池学习:基础概念及三大方法、七大参数、四大拒绝策略(基于狂神说的学习笔记)
      Pytorch从零开始实现Vision Transformer (from scratch)
      浅谈安科瑞电力监控系统在百事亚洲研发中心的应用
    • 原文地址:https://blog.csdn.net/csdnuserlala/article/details/116401787
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号