java程序员菜鸟入门之十八hibernate

一、概述

1、Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

2、好处:操作数据库时,可以以面向对象的方式来完成,不需要书写SQL语句

3、hibernate属于完全面向对象的操作数据库的dao层框架

二、开发环境的搭建

1、实体类:持久化类提供无参构造

                   成员变量私有,提供get/set方法访问,需提供属性

                   持久化类中的属性,应尽量使用包装类

                   持久化类中应提供oid,与数据库中的主键对应

                   不要用final修饰class(hibernate使用cglib代理生成代理对象,代理对象是继承被代理对象,如果被final修饰,将无法实现继承,无法生成代理对象)

2、实力类与数据库的映射配置( orm元数据的配置):配置文件中的property与数据库表中的字段一一对应

              根元素(标签)、class元素、id元素、proproperty元素

             <hibernate-mapping>
                    <class name="com.baidu.pojo.Customer" table="CUSTOMER">
                              <id name="id" column="CID">
                                     <generator class="increment" />
                              </id>
                             <property name="username" column="USERNAME" />
                             <property name="password" column="PASSWORD" />
                    </class>
            </hibernate-mapping>

3、hibernate的主配置

               必选属性配置(数据库连接配置):


               可选配置:


               元数据引入配置:

                     <mapping resource="cn/baidu/pojo/Customer.hbm.xml"/>

三、hibernateAPI详解

1、Configuration:加载核心配置文件,加载映射文件(不过,一般映射文件都配置在核心配置文件中,该方法用少)

                  创建:Configuration  conf = new  Configuration()空参构建

                  加载主配置:conf.configure()

                 加载orm元数据:conf.addResource(resourceName);

                                            conf.addClass(persistentClass);

                创建sessionFactory:SessionFactory  sf = conf.buildSessionFactory()

2、SessionFactory:SessionFactory用于创建操作数据库核心对象session的工厂

                               SessionFactory负责保存和使用所有配置信息,是一个线程安全的对象设计,整个web应用中,只有一个SessionFactory对象

                                sf.openSession()/打开一个新的session对象

                                sf.getCurrentSession()/获得一个与线程绑定的对象  

3、Session:hibaernate框架与数据库之间的连接会话,类似于JDBC年代的connection对象,通过session来完成对数据库的增删改查工作,是hibernate操作数据库的核心对象

                    Transaction  tx2 = session.beginTransaction();获得事务

                    save():增

                    get():查

                    update():改

                    delete():删

4、Transaction:封装了事务的操作

                           session.beginTranaction();/打开事务

                           commit();/提交事务

                           rollback();/回滚事务

四、hibernate对象状态

1、瞬时状态:没有id,也没有存在session缓存中

2、持久化状态:有id,也在session缓存中

3、游离/脱管状态:有id,没有在session缓存中

五、hibernate的缓存

六、hibernate的事务

1、如何在hibernate中指定数据库的隔离级别

2、在项目中如何管理事务:

                  业务开始之前打开事务,业务执行之后提交事务. 执行过程中出现异常.回滚事务.

                 在dao层操作数据库需要用到session对象.在service控制事务也是使用session对象完成. 我们要确保dao层和service层使用的使用同一个session对象

           在hibernate中,确保使用同一个session的问题,hibernate已经帮我们解决了. 我们开发人员只需要调用sf.getCurrentSession()方法即可获得与当前线程绑定的session对象

                  注意: 调用getCurrentSession方法必须配合主配置中的一段配置

                        :通过getCurrentSession方法获得的session对象.当事务提交时,session会自动关闭.不要手动调用close关闭.

七、hibernate对数据库的查询操作

1、HQL语法

                   基本查询


                   条件查询(占位符:命名占位符、?占位符)



                   分页查询


2、Criteria查询

                  基本查询


                  条件查询


                  分页查询


                 查询记录总数


3、原生SQL查询

                 基本查询

      返回数组List


    返回对象List


                 条件查询


                 分页查询


八、hibernate中多表之间的关系表达

1、一对多/多对一

                   关系表达:

                              表中的表达:多的一方的外键指向一的一方的主键

                              对象中的表达:使用集合/对象属性来表达一的一方支持可以拥有多个多的一方

                              orm元数据中的表达:<one-to-many>、<many-to-one>标签的使用

                   对象关联性:属性注入

                    级联操作、关系维护

2、多对多

                   关系表达:

                                 表中的关系:使用中间表来对应两张表中的主键对应关系

                                  对象中的关系:两方都用集合来表示可以拥有多个对方

                                  orm元数据中的关系表达:<many-to-many>标签的使用

                   对象关联性:属性注入

                   级联操作、关系维护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值