使用hibernate建立表
1.建立表前,我们需要确定表的列,以及需要建立的表.
1.1 需要建立的表 用户表 商品表 分类表 订单表
1.2 寻找表与表的关系 用户 -- 订单 --- 商品 -- 分类
1.3 表分析
用户 -- 订单 一个用户可以有多个订单,一个订单只能有多个用户,如果一个订单能被多个用户拥有,那么就乱套了
商品 -- 分类 一个分类有多个商品,一个商品只能有一个分类.....
订单 -- 商品 一个订单中能出现多个商品,一个商品也能出现在多个订单中,因为商城的商品不可能只有一件把.所以我们能确定基本的关系为 多对多 , 解决方案 拆表 拆成一对多
表关系示意图 1 是 1的一方 ,n 是多的一方
弄清楚表关系以后,我们需要进一步的确认表中的字段,最后需求字段如下,
那么我们开始编写bean类
首先编写user 表
基本字段如下,持久化类建议使用封装数据类型,否则效率会很低
然后我们编写订单表,基本信息如下
我们已经确定关系,那么接下来我们确定hibernate关系规范
一对多:
一的一方要有多的一方对象的引用,也就是对象属性
多的一方要有一的一方set<Object> 对象集合,多的一方不能出现一的一方外键字段,
也就是说订单里的uid字段需要删除,并且增加User 的引用
然后我们修改一的一方,一的一方需要多的一方set<> 对象,在用户表里增加字段orders,需要set get方法
然后可以编写映射文件 order
编写user 映射文件
然后hiberna.cfg.xml引入 映射文件,我有配置自动生成表,
然后运行一下,看看生成的表 ,
接下来我们来写分类表跟商品表 , 也是一对多关系
首先我们确定需要的字段.
得到表后我们来变编写bean类
首先我们写category类
接下来我们写product 商品类
然后我们根据hibernate 规则来修改bean 类
一的一方要有多的一方的set对象集合,
多的一方要有一的一方的对象, 并且不能出现跟被约束字段一样的属性,
所以我们要删除Product 类里面的cid (相关字段),增加一的一方的对象属性
然后根据规则,在一的一方(Category)增加多方的set对象集合
然后配置Product 的映射文件
最后配置Category的映射文件
然后在hibernate.cfg.xml 文件引入
最后运行一下,查看生成的表
表结构
进一步分析
多对多关系:order : product
拆成一对多,建立一张中间表,
1.确定中间表需要的字段,
因为中间表不止(pid,oid)俩个字段,所以我们不能使用hibernate 自动生成中间表的功能,所以我们自己建立一张中间表 ,
1.建立中间类orderitem
因为order 跟 product 之前已经建立了,所以我们只需要稍微修改一下即可,
order 跟product 都是一的一方 ,所以他们都需要多的一方的set<> 对象属性集合
在order 跟product 类中增加该字段,并且增加set get 方法
设置映射文件Product
设置order 映射文件
最后我们配置一下中间表的映射文件
最后在hibernate.cfg.xml 引入一下映射文件就行
最后demo 运行一下,就可能生成表了
终于完成啦 ,看一下我们的成果
本人菜鸟一枚,如果有地方不对,欢迎指出