• Hibernate单表映射


    一、单一主键

    单一主键:指表中由某一列来充当主键

      assigned 由java应用程序负责生成(手工赋值)

      native 由底层数据库自动生成提示符,如果是MySQL就是increment,如果是Oracle就是sequence,等等。另外,即使手动赋值主键,也不会起作用。

       <generator class="native" />mysql 中为AUTO_INCREMENT PRIMARY KEY

    二、基本类型

      Hibernate基本数据类型 前两列比较常用,例如在配置文档中的type就经常使用这些。

      date 表示日期:YYYY-MM-dd

      time 表示时间:hh:mm:ss

      tiemstamp时间戳: yyyy-MM-dd hh:mm:ss

      另外,映射的数据类型设置会决定最后数据库中的类型。 比如我们在Java程序中使用的是java.util.Date类型定义变量Birthday。但在映射关系的配置文档中对应的type改成date类型,那么最后保存在数据库的Birthday类型就是date,也就是YYYY-MM-dd,而非java.util.Date(或者timestamp)的YYYY-MM-dd hh:mm:ss。

      

      

    三、对象类型

    1.clob和text对应大文本文件,blob对应大的二进制文件,例如视频音频图片

    2.java中的clob对应存储大文本文件,java中的blob对应存储大二进制文件

    MySQL不支持标准SQL的CLOB类型,在Mysql中,用TEXT,MEDIUMTEXT及LONGTEXT类型来表示长度超过255的长文本数据

    @Test
    public void saveImage() throws Exception {
        Student s = new Student(1, "李四", "男", new Date(), "北京");
        File f = new File("d:" + File.separator + "boy.jpg");
        InputStream input = new FileInputStream(f);
        Blob image = Hibernate.getLobCreator(session).createBlob(input, input.available());
        s.setImage(image);
        session.save(s);
    }
    
    @Test
    public void readImage() throws Exception {
        Student s = (Student) session.get(Student.class, 1);
        Blob image = s.getImage();
        InputStream input = image.getBinaryStream();
        File f = new File("d:" + File.separator + "girl.jpg");
        OutputStream output = new FileOutputStream(f);
        byte[] buff = new byte[input.available()];
        input.read(buff);
        output.write(buff);
        output.close();
        input.close();
    }
    写入、读取照片

    四、组件属性

    组件属性:实体类中的某个属性属于用户自定义类的对象;

    作用:将两个实体类合并在一起组建成一个表 在hbm.xml文件中配置:

    格式:

      <component name="取的名字" class="类名">

        <property name="类中属性" column="对应生成数据库中列属性名">

       </component>

    五、get和load和区别

    1.在不考虑缓存的情况下,get调用后立即发出sql语句,并返回对象。load调用后返回代理对象,保存了实体对象id,直到使用了对象的非主键属性时才发出sql语句

    2.当查询到数据为空时,get返回null,load返回objectNotFound异常

  • 相关阅读:
    记一次百度面试题
    深度拷贝对象
    spring boot 学习笔记
    mac Zip 常用命令
    Mac OS 终端下使用 Curl 命令下载文件
    懒人必备的移动端定宽网页适配方案
    前端面试题之 sum(2)(3) (链式调用,toString,柯里化,数组操作)
    web上的复制
    fileupload上传文件时带参数
    Mac下Nginx环境配置
  • 原文地址:https://www.cnblogs.com/silence-maple/p/10071613.html
Copyright © 2020-2023  润新知