Hibernate学习记录

一:Hibernate:
      Hibernate未来的开发位置,持久层的框架

     ORM:
         ORM映射
         相当于一个xml配置文件
         导入Hibernate的包:
              1.required文件夹中的所有的jar包:
              解析: core为核心包
                      annotations为注解包
                      ssist改变字节码文件增强
                     dom4j解析xml文件的包
             2.日志包
                     log4j包
                     slf4j包
                     以及联系桥梁
                     补充
                          sql语句中bigint 是long类型

                          配置映射文件(XML):
                         一般在bean的文件下创建一个和实体类名字相同+.hbm+.xml的xml文件

                         配置地址 :

                             <!DOCTYPE hibernate-mapping PUBLIC
                                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">


                    如果没有网络,不能进入到www.hibernate.org中自动获取标签:
                    window-->XML catalog --> add -->URI : www.hibernate.org/dtd/hibernate-mapping-3.0.dtd
                    Location:fileSystem--取到准备好的hibernate-mapping-3.0.dtd文件


二:Hibernate核心配置
             要求
                1.src目录下
                2.名称:hibernate.cfg.xml
                 配置地址:
                <!DOCTYPE hibernate-configuration PUBLIC
                    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

                 配置时先配置sessionFactory标签,一个数据库对应一个sessionFactory标签

                 需要配置的详情查看 hibernate/project/etc/hibernate.properties
    

三:Hibernate学习文档:
                  hibernate安装文档中javadocs文件夹中index.html

四:session的增删改查
                 除了查不需要开启提交事务,其它的都需要开启提交事务
                 注意:!!!
                          进行增删改的时候,请先进行查询然后操作
                          切记不可以对id进行修改,会报错

五:持久层的编写规则:
               1.提供一个无参数,public访问控制符的构造器
               2.提供一个表示属性,映射数据表主键字段    --唯一标识符OID,数据库通过主键,
               java通过地址确定对象,持久化类通过唯一表示OID确定记录
              (例:customer中的id与对应数数据库中的id)
               3.属性set/get方法
               4.基本数据类型的包装类型

六:主键的生成策略
             一般使用两种生成策略: uuid与native


           increment:获取主键的最大值,获取后+1作为这次操作的主键
           <并发反应时,同时操作一个数据,会导致id重复出错>
            indentity:自动递增
                    注:oracle数据库不能自动递增,mysql可以
            sequence:自动递增
                   注:oracle可以,mysql不可以
            native:根据数据库的不同自动调整生成的策略

                   uuid:用于char,varchar类型作为主键

            assigned:自己维护的,不用hibernate维护
                   注:要求自己设置id的值


            ThreadLocal类:

                        底层是一个Map集合
                        Map<"当前的线程",值>,取的时候默认的情况下
                        map.put("当前的线程”,存值);
                        map.get("当前的线程”)

七:Criteria查询接口(做条件查询非常的合适)
                  Query接口:HQL的查询

八:级联保存
         把相关联的同步保存到数据库当中

         方向性:
                  保存客户 级联 联系人
                  保存联系人 级联 客户
                  级联配置 :cascade="save-update"

九:级联删除
                   1.外键下进行的普通删除
                   Hibernate框架会自动把外键制null然后删除

                    级联删除下可以在删除客户的同时,它下面的联系人也删除

                          cascade级联的值:
                          none  --不使用级联
                          save-update --级联保存和更新
                          delete  --级联删除
                          delete-orphan  --孤儿删除(注意:只能应用一对多关系)
                          all  --除了delete-orphan的所有情况(包含save-update delete)
                         all-delete-orphan  --包含了delete-orphan的所有情况(包含save-update delete delete-orphan)

十:放弃外键对的维护
                     inverse="true"
                     作用:减少不必要的sql语句的生成

                     cascade与inverse:
                     cascade:用于级联操作(保存,修改,删除)
                     inverse:用于维护外键
注:
当进行外键维护的时候,进行单方的级联保存,不影响保存数据但是会导致级联的部分外键保存或生成,此时就要双向进行级联操作进行保存

十一:级联和多对多对比
                级联代码书写方便,但是不方便删除,多对多相反,采用在集合里进行删除

 

学习感想:

hibernate学习之后,这个框架和我之前学习的Mybatis框架很像,作为新手我会觉得hibernate更加简单,但是hibernate的缺点暴露的明显,因为是自己生成的Sql语句,第一调整Sql问题的时候修改的内容太多,第二,不方便连接多Sql语句应用开发。

 

 

 

 

 

 

 

 

 


    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值