zoukankan      html  css  js  c++  java
  • JPA学习---第六节:大数据字段映射与字段延迟加载

    1、大数据字段所需的注解 @Lob ,例如:

    @Lob
    private String info;

    在mysql中映射产生的字段的类型是longtext;在oracle中是  CLOB

    @Lob
    private Byte[] bytes;

    mysql中对应longblob;oracle中不能使用byte[]字段加@Lob的方式直接映射

    2、大数据字段最好是延迟加载,字段延迟加载时时,如果没有访问字段所对应的属性方法(getXX())时,就不会将大数据字段中的数据加载到内存当中,这样可以节约内存。延迟加载注解:

        @Basic(fetch=FetchType.LAZY)
        private Byte[] bytes;

    代码如下:

    package learn.jpa.bean;
    
    import java.util.Date;
    
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.EnumType;
    import javax.persistence.Enumerated;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Lob;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    import javax.persistence.Transient;
    
    @Entity
    @Table(name="t_person")
    public class Person {
    
        @Id                //@Id用于标记属性的主键
        @GeneratedValue
        private Integer id;
        @Column(length=64,name="personName",nullable=false)
        private String name;
        // TemporalType.DATE 表示日期格式 例:2014-10-01
        // TemporalType.TIME 表示时间格式  例:12:21:34
        // TemporalType.TIMESTAMP 表示日期加时间格式  例:2014-10-01 12:21:34
        @Temporal(TemporalType.DATE)
        private Date brithday;
        // @Enumerated 注解枚举型   
        // EnumType.STRING 表示保存到数据库的值是 MAN or WOMEN
        // EnumType.ORDINAL 表示保存到数据库的值是 MAN 和 WOMEN 所设置的索引值
        @Enumerated(EnumType.STRING)
        @Column(length=5, nullable=false)
        private Gender gender;
        // @Lob 字段需要存放大的文本数据
        @Lob
        private String info;
        // 存放二进制数据 
        // FetchType.LAZY 表示延迟加载  当不访问字段所对应的属性方法时,就不会从数据库中获取数据装载到内存中
        // FetchType.EAGER 表示立刻加载
        @Basic(fetch=FetchType.LAZY)
        @Lob
        private Byte[] bytes;
        // @Transient 说明 imagepath 字段所对应的属性不作为持久化字段,
        // 也就是说不和数据库中的某个字段关系映射
        @Transient
        private String imagepath;
        
        public Person(){}
        
        public Person(String name){
            this.name = name;
        }
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getBrithday() {
            return brithday;
        }
    
        public void setBrithday(Date brithday) {
            this.brithday = brithday;
        }
    
        public Gender getGender() {
            return gender;
        }
    
        public void setGender(Gender gender) {
            this.gender = gender;
        }
    
        public String getInfo() {
            return info;
        }
    
        public void setInfo(String info) {
            this.info = info;
        }
    
        public Byte[] getBytes() {
            return bytes;
        }
    
        public void setBytes(Byte[] bytes) {
            this.bytes = bytes;
        }
    
        public String getImagepath() {
            return imagepath;
        }
    
        public void setImagepath(String imagepath) {
            this.imagepath = imagepath;
        }
        
    }
  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/hwlsniper/p/4082283.html
Copyright © 2011-2022 走看看