一、框架引入
1.创建项目。
2.下载官方jar包。hibernate-distribution-3.5.6-Final
3.导入需要的包。
D:\jar\hibernate\hibernate-distribution-3.5.6-Final\hibernate3.jarD:\jar\hibernate\hibernate-distribution-3.5.6-Final\lib\required\*D:\jar\hibernate\hibernate-distribution-3.5.6-Final\lib\jpa\hibernate-jpa-2.0-api-1.0.0.Final.jar
4.运行项目发现有错。
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
导入另一个包
D:\jar\slf4j-nop-1.5.8.jar
注意此时的包必须与 slf4j-api-1.5.8.jar 版本相对应。
二、初步使用
1.many-to-one 多对一关联。
对于外键关联,存在多个外键表实体对应一个主键表实体。在项目中就是一对多关联。例:
①汽车品牌表Brand对应的实体类:
public class Brand { private int brandId; private String name; private int bIndex; private String memo; public int getBrandId() { return brandId; } public void setBrandId(int brandId) { this.brandId = brandId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getbIndex() { return bIndex; } public void setbIndex(int bIndex) { this.bIndex = bIndex; } public String getMemo() { return memo; } public void setMemo(String memo) { this.memo = memo; }}
②汽车系列表Series对应的实体类:
public class Series { private int seriesId; private String name; private int sIndex; private String memo; private Brand brand; public int getSeriesId() { return seriesId; } public void setSeriesId(int seriesId) { this.seriesId = seriesId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getsIndex() { return sIndex; } public void setsIndex(int sIndex) { this.sIndex = sIndex; } public String getMemo() { return memo; } public void setMemo(String memo) { this.memo = memo; } public Brand getBrand() { return brand; } public void setBrand(Brand brand) { this.brand = brand; }}
实际关系是一个品牌的汽车包含多个系列,因此存在多个系列从属于一个品牌的情况。故配置Series.hbm.xml如下:
注意:以上在Series类中有了brand类就不用添该表中的brand_id,否则就会报错
Column 'Brand_id' specified twice
列Brand_id 实例化两次。
三、延迟加载,连接抓取
3.1多对一
3.2一对多
3.3获取数据
String hql = "from Category";Listlist = this.getHibernateTemplate().loadAll(Category.class);
总结:在映射文档中定义抓取策略时,只有通过get或load方法才生效。