【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语句去关联或者是新建一个实体把这两个实体关联起来。

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值