🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**1. 延迟加载** ```java //@OneToOne、@OneToMany、@ManyToOne、@ManyToMany 都有一个属性 fetch 来控制加载规则 //但是受到加载规则影响的只有 @OneToMany、@ManyToMany两个注解,剩余注解用哪种加载规则都是一样的效果 public @interface OneToMany { //加载规则 //FetchType.EAGER 立即加载,查询当前实体时,也查询该实体关联的其它实体 //FetchType.LAZY 延迟加载,查询当前实体时,不查询该实体关联的其它实体 FetchType fetch() default FetchType.LAZY; } ``` **2. 使用加载规则** (1)实体之间建立关系。 ```java public class Country { @OneToMany(mappedBy = "country", fetch = FetchType.LAZY) private List<Province> provinceList; } ``` ```java public class Province { @ManyToOne(targetEntity = Country.class, fetch = FetchType.LAZY) @JoinColumn(name = "country_id", referencedColumnName = "id") private Country country; } ``` (2)不同加载规则查询结果。 ```java /*********************** Country -> Province *************************/ @Test public void example01() { List<Country> countryList = countryRepository.findAll(); for (Country country : countryList) { System.out.println(country.getId()); //当加载规则是 @OneToMany(mappedBy = "country", fetch = FetchType.LAZY) 时,只查询了 Country,没有查询 Province //所以只调用 Country 时是可以的,但是调用 Province 则抛出异常 //System.out.println(country.getProvinceList().size()); //当加载规则是 @OneToMany(mappedBy = "country", fetch = FetchType.EAGER) 时,Country 与 Province 都查了 //调用 Country 或 Province 都可以 System.out.println(country.getProvinceList().size()); } } ```