1.为什么用Hibernate框架:

java程序数据保存的变化:
* 内存存在:java基础中,
    数据保存在内存中,只在内存中暂时存在
* 文件保存:有io/流之后,数据可以保存到文件中
* 数据库保存:随着数据量的增大,数据处理变多,
    如果继续保存到文件,保存和解析存在格式问题,工作量大,并且重复性高,操作繁琐并且与程序功能关系小,
    出现了数据库,对于大量数据的保存和操作都比较节约资源
* jdbc连接数据库:jdbc连接数据库,虽然数据可以保存,但每个操作都有数据库的连接,数据的读取,再解析数据转化为对象,代码重复多
* Hibernate框架:框架就是模板/模型,它把java中从数据库读数据,转化为对象供程序使用的常用代码做成一个工具黑箱,
    即对jdbc进行轻量级封装,不需要关心数据库表数据是如何变成对象的,我们只要设置好对应的映射关系,
    告诉框架我们是要取对象还是操作对象,框架自动帮我们把这些机械劳动做完,让我们把更多的精力放在程序运行设计上

2.当类之间存在包含关系,怎么在映射里体现? 

常用关系映射有四种:
1.单向一对多:
a.实体类:在一的一方添加set集合,泛型指定为多的一方类
private Set jds = new HashSet();
b.映射文件:添加<set>
<set name="jds" > //指定本类set的属性名
  <key column="qxid" /> //会在多的一方添加该列
  <one-to-many class="Jd" /> //绑定多的一方的类
</set>

2.单向多对一
a.实体类:添加一的一方的类属性
private Qx qx;
b.映射文件:添加<many-to-one>
<many-to-one name="qx" class="Qx" column="qxid" />  //在本类添加该列
指定本类要关联的属性-->指定关联的类-->指定关联的列,会在本类添加
   3.多对多:
     a.实体类:双方添加set
     b.映射文件:就一方而言,每一方都按多对一配置即可
       <set name="members" table="r_emp_proj">  //双方都有多个,需要建一个中间表来保存对应关系
              <key column="r_proj_id" />  //指定本类关联的列,对方列
              <many-to-many
                  class="com.zhaolong.entity.Employee" column="r_emp_id" />  //指定关联的类和指定关联列
          </set>
      
       <set name="projects" table="r_emp_proj" inverse="true">  //有一方放弃列的管理(理解为主键生成的权力)
             <key column="r_emp_id" />
             <many-to-many
            class="com.zhaolong.entity.Project" column="r_proj_id" />
          </set>    4.一对一:
     a.实体类:添加一的一方的类属性
       private Qx qx;
     b.映射表:双方添加<one-to-one>
       <one-to-one name="card" class="对方类全限定名" />
    
总结:书写时,先指定本方是用什么关联?  再书写关联的是什么?  用那个列来关联? 
           多对一和一对多,也可以双向关联,看具体情况,比如从本方查对方数据,就要双向关联

3.inverse cascade 怎么用?

  都是在one,many标签中用,inverse为在关联中放弃生成主键权力,cascade为指定在执行何种操作时进行级联,同步删除或更新

最新文章

  1. android Bundle savedInstanceState用途
  2. 关于layui
  3. sso demo mysql ( cas )
  4. &lt;Web 之困 现代Web应用安全指南&gt;一本好书 69.00?
  5. 在使用SQLite插入数据时出现乱码的解决办法
  6. 字符流缓冲区的使用之BufferedWriter和BufferedReader
  7. Hdu 1452 Happy 2004(除数和函数,快速幂乘(模),乘法逆元)
  8. [Angular 2] Injecting a Service
  9. Nginx阅读笔记
  10. ModelDriven
  11. strcpy函数
  12. netdom remove 错误:netdom remove
  13. 2018.5.15Html标签初学
  14. 树的子结构(JAVA)
  15. Linux 学习笔记 1
  16. hdu 2516(Fibonacci博弈博弈)
  17. Vxlan学习笔记——原理
  18. Intent 跳转Activity
  19. react中的路由模块化
  20. js记录用户访问页面和停留时间

热门文章

  1. 【java基础】随手写的一个日期计算,新手可以看看
  2. Java连接MQ的实例, 测试类
  3. Hibernate 基于主键的一对一关联关系随手记
  4. 【转】Linux vmstat命令实战详解
  5. 十一.安装Redis
  6. BZOJ2333:[SCOI2011]棘手的操作(Splay)
  7. Codeforces Round #538 (Div. 2) D. Flood Fill 【区间dp || LPS (最长回文序列)】
  8. Mapper.xml映射文件
  9. qt+vs2005新建配置不自动加载Generated Files进工程(个人备份)
  10. 创建&lt;Bean&gt;sessionFactory错误, init方法调用失败;嵌套异常是org.hibernate.exception。