Hibernate基础

一:整体结构

        API:

             1,API简介。

             2,Session中的方法。

             3,查询:HQL与Criteria

    

        配置:

             1,主配置文件

             2,映射文件

                     映射基础

                     普通属性

                     主键

                     集合属性

                     关联关系

                     一对多/多对一

                     多对多

                     一对一

                     继承结构


二:API简介

        Configuration 配置

             configure()

             configure(String resource)

             addResource(String resource) 导入一个指定位置的映射文件

             addClass(Class clazz)导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件(一般用于测试,省去了在hibernate.cfg.xml中配置映射文件的麻烦)

             buildSessionFactory()

        

        SessionFactory Session工厂

             openSession()

             getCurrentSession()

             close()

        

        Session 很重要的一个对象

             操作对象的方法

                 save(Object)

                 update(Object)

                 delete(Object)

             查询的方法

                 createQuery(String) --> Query

                 createCriteria(Class)

             管理事务的方法

                 beginTransaction() --> Transaction

                 getTransaction()   --> Transaction 获取当前Session中关联的事务对象

             其他的方法

             ...

        

        Transaction 事务

             commit()

             rollback()

        

        Query 查询

             list() 查询一个结果集合。

             uniqueResult() 查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。

             ...

        

三:Hibernate主配置文件

        1,配置的key前面的hibernate.前缀 可以有,也可以没有。如hibernate.dialect或dialect均可。

        2,按作用可分为三类:

             1,数据库信息

                 <property ...>

                 方言、JdbcUrl、驱动、用户名、密码

             2,导入映射文件

                 <mapping ...>

             3,其他配置

                 <property ...>

                 show_sql 显示生成的SQL语句(true)

                 format_sql 格式化生成的SQL语句(true)

                 hbm2ddl.auto 自动生成表结构(create或update)

                 hibernate.hbm2ddl.auto

        生成表结构的两种方式:

             1,hbm2ddl.auto

             2,使用SchemaExport工具类

        注意:只能建表,不能建库

        

        主键增长策略:

            如果是数字,建议使用包装类型。

            identity

            sequence

            hilo

            native

            assigned

            uuid

            foreign

            ...

        

四:hibernate中对象的状态

        临时状态:Transient

             与数据库没有对应,跟Session没有关联。

             一般是新new出的对象。

        持久化状态:Persist

             对象在Session的管理之中,最终会有对应的数据库记录。

         特点:

             1,有OID

             2,对对象的修改会同步到数据库。

        游离状态:Detached

             数据库中有对应记录,但对象不在Session管理之中。

             修改此状态对象时数据库不会有变化。

        删除状态:Removed

             执行了delete()后的对象。

    

五:关联关系

        双向关联

        单向关联:

             单向多对一

             单向一对多

             单向多对多


六:级联inverse

        维护关联关系:

             对于一对多:

                 就是设置外键列的值。

             对于多对多:

                 就是插入或删除中间表中的记录。


七:session的方法说明

        1、操作实体对象的

             save():把临时状态变为持久化状态

             update():把游离状态变为持久化状态

             saveOrUpdate():把临时状态或游离状态转换为持久化状态

             delete():把持久化状态或游离状态转变为删除状态

        

        2、操作缓存的

             clear():清除session中所有的对象

             evict(object):清除指定的对象

             flush():强制刷出,提交到数据库中去,默认提交事务之前执行flush强制执行所有HQL、SQL语句

        

        3、查询实体对象的

             get():会马上执行sql语句,返回的是对象;数据不存在返回null

             load():懒加载为true的时候,用的时候才会执行sql 语句(延迟加载),否则(lazy="false")立即执行sql。返回的是一个代理对象,如果类被final修饰,懒加载就会失效,数据不存在就会抛出异常ObjectNotFoundException

             createQuery()

             createCriteria()

        get和load的区别:

                        加载方式        返回值              如果数据不存在

            ---------------------------------------------------------

            get      立即加载      真实对象或null        返回null

            load    延迟加载      代理对象                  抛异常

        

        

        

        

        

        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值