zoukankan      html  css  js  c++  java
  • 【Hibernate学习】 —— 抓取策略(注解方式)

      当应用程序须要在关联关系间进行导航的时候。hibernate怎样获取关联对象的策略。

    抓取策略的方式:

             FetchType.LAZY:懒载入。载入一个实体时。定义懒载入的属性不会立即从数据库中载入。

             FetchType.EAGER:急载入,载入一个实体时,定义急载入的属性会马上从数据库中载入。

     

             在项目中的体现。我这里有两个实体。一个放基础数据的实体。还有一个是放操作记录的实体。

    这两个实体的关系是一对一关系,因此要把基础数据中的主键放在操作记录中作为外键。查询的时候查询操作记录表顺便把基础表相关信息带出来:

     

    这里用的是注解的方式:

    private Company company;
    @OneToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="company_id")
    publicCompany getCompany() {
    returncompany;
    }
    publicvoid setCompany(Company company) {
    this.company= company;
    }

    抓取策略的体现:fetch=FetchType.EAGER,这里我们查询后要立刻显示出来,故选用了急载入。

     

    这里遇到了一个问题:

    Could not determinetype for: com.tgb.xyb.entity.Company, at table: OperateRecord, for columns:[org.hibernate.mapping.Column(company)]

    解决方式:注解放在get方法上面(注:原来把注解放在了方法上)

             是由于get方法是外部获取类内部属性的方法。所以凡是须要获取属性或者对象的都是在get方法上声明的。

    比如Spring的依赖注入,也是从get方法去注入。

     

            如今用了抓取策略的优点是。我们仅仅须要把这个策略加上,那么对应的实体就会关联上。我们就不须要去写对应的HQL语句去关联或者是新建一个实体把这两个实体关联起来。

  • 相关阅读:
    iOS开发数据库篇—SQLite简单介绍
    iOS FMDatabase 本地数据库的创建和几个基本使用方法
    iOS开发-CoreMotion框架
    ios中陀螺仪CoreMotion的用法
    iOS摄像头和相册-UIImagePickerController-浅析
    iOS使用AVCaptureSession自定义相机
    在iOS上实现一个简单的日历控件
    iOS开发UI篇—Button基础
    在Virt-manager中使用snapshot功能
    Node.js学习
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6915533.html
Copyright © 2011-2022 走看看