Hibernate关系映射问题
发布网友
发布时间:2022-05-06 14:12
我来回答
共6个回答
懂视网
时间:2022-05-06 18:34
2映射文件User.hbm.xml
3hibernate.cfg.xml配置文件
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernast_test
root
hanhan
org.hibernate.dialect.MySQLDialect
true
update
Hibernate的主键生成策略种类
手动:Assigned
Hibernate主动:uuid
数据库交互:
需要和数据库交互以生成id的:guid、identity、sequence、native、foreign
说明:需要和数据库交互生成,需要经过一次查询才能生成
Guid,identity:MySQL,SQLserver的生成方式
sequence:Oracle,db2的生成方式,自增序列
native:identity+sequence,跨平台
foreign:只适用基于共享主键的一对一关联映射的时候使用。即一个对象的主键是参照的另一张表的主键生成的。
总结:
Hibernate的基本映射:重点是对主键生成策略的认识,根据不同数据库选择不同的方式,重要理解。
热心网友
时间:2022-05-06 15:42
基本上都比较常用,非说那个不常用的话一对一用得可能能少点,下面说下我的理解,我尽量说通俗点
我下面就举几个例子你就明白了:
1、一对一,比如一个表的字段有100多个,而且其中有40个其他表可能有用,那么你把这个表拆分成两个表,并且两个表中的数据都是一条记录对应一条记录,某一个表中存放另一个对应表的id用来维护两个记录之间的关系,因为本来这两条记录原来就是一条记录,不知道这么说你能明白吗?
2、一对多,如:部门表与用户表,一个部门是不是有多个用户,但是一个用户有且只有一个部门,很清晰了吧
3、多对一,相当于吧部门表与用户表打颠倒
4、多对多,其实就是一对多与多对一结合起来实现的关系,如用户表与权限表,一个用户有多个权限,而一个权限同时对应多个用户,两个结合起来就是多对多
5、单向双向只是hibernate的概念,比如你这两个表A---表B,这样通过表A来维护表B的数据,但是表B不能维护表A,这就是单项,双向现在应该就好解释了,通过两个表都可以相互管理对方的数据。书面点,单项就是由父类管理关联关系,子类无法管理,双向父类子类都可管理。
hibernate提出的这些关系都有相应的配置,其实这些关系在数据库中一直是存在的,只是hibernate对这些关系都通过不同的配置实现,单向和双向也有相应的配置,这些功能当然也可以不通过hibernate配置实现,自己在代码中维护这块关系也可以,单双向,数据库中没有类似相关概念,hibernate提出这块功能,我们可以通过配置完成他们的*功能。想想如果我们代码只提供用户表管理部门表的功能,不给通过部门管理用户的方法,那么这是不是就类似于hibernate的单向概念呢?
时间有限就说这么多,都是自己在项目中的一些积累,可能有些地方理解不够深刻,包含包含
热心网友
时间:2022-05-06 17:00
常用是看业务吧。。。一般是单向一对多
就是一个班级有一群学生这一种。。
至于多对多可以转化成一对多的。。
--------------------------------------
学习的话可以结合具体例子还写。。
热心网友
时间:2022-05-06 18:34
你上面提到的几个都是常用的,而且都是推荐双向的,Hibernate不推荐使用单向关系,因为某些时候可能会对性能造成一定的影响。
把数据库的一些知识补补吧,这样理解Hibernate容易多了,其实上面说的那些关系都是数据库中的。没有数据库的知识,学Hibernate只能事倍功半。
热心网友
时间:2022-05-06 20:26
one-to-many
many-to-one
many-to-many
one-to-one
one-to-one是one-to-many的是种特列,在多的一端加唯一约束,这样就成了one-to-one
热心网友
时间:2022-05-06 22:34
<many-to-one column="" class=""/>
<one-to-one />
```
在pojo里面做些变量操作