公告:欢迎访问,查看更多资源请点我^.^!            点我关闭广告
Hibernate基础
2017-10-23 13:23:49
526人阅读
评论(2)
分类:Java

一:整体结构

        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    延迟加载      代理对象                  抛异常

        

        

        

        

        

        


分享一下:
赞一下(0)
博主资料
博主头像
zc521106
文章:34
浏览:19899
文章分类
Java(12)
NoSql(112)
数据库(12)
前端(12)
阅读排行
Java基础知识
(12)
NoSql应用
(112)
数据库Oracle语法
(12)
前端常用工具类
(12)
java web项目
(12)
linux安装mysql
(12)
评论区
这篇文章怎么样?写点评论吧!
姓名:
邮箱:
有回复时通知我:
发表
回复【10.20.30.32】:
Configuration接口:对Hibernate进行配置,加载hibernate.cfg.xml文件并创建一个sessionFactory; SessionFactory接口:负责初始化hibernate,充当数据存储源的代理,并负责创建Session对象。sessionFactory是线程安全的; Session(会话)接口:负责执行被持久化对象的CRUD操作,线程不安全,相当于是jdbc的connection; Query与Criteria接口:负责执行各种数据库的查询; Transaction(事务)接口:负责操作相关事务,提交或回滚。
2017-10-23 13:43:50
Hibernate五大核心接口(类)
2017-10-23 13:42:48
* 以上用户言论只代表其个人观点,不代表iBlog网站的观点或立场,如有任何疑问请随时联系管理员...