传智播客java学习--hibernate初步

我今天学习了徐老师讲的hibernate知识,我做了简单的笔记:

 

 

一、Hibernate

a)         连接java应用程序和关系型数据库的中间件,对JDBC API封装,负责对象持久化

b)        位于持久化层,封装所有的数据访问细节,使业务逻辑层更关注于业务逻辑,一种ORM映射工具。

 

 

二、Hibernate API

1.Configuration 配置hibernate,根启动hibernate,创建

      sessionFactory对象。

   2.SessionFactory 初始化hibernate,充当数据源代理,创建

      session对象。线程安全的,可被多个线程共享。重量级的,

      需要一个很大的缓存,用于存放于定义的sql语句和映射元数

      据等。用户还可为它配置一个缓存插件,称为二级缓存。

   3.Session 使用最广泛,也被称为持久化管理器,它提供和持久

      化相关的操作。增、删、改、查等。不是线程安全的,避免多

      个线程共享。轻量级的,创建和销毁不需要消耗太多资源。

      Session中有一个缓存,称为一级缓存。存放当前工作单元加

      载的对象。

   4.Transaction hibernate数据库事务接口,

     它对底层的事务接口作了封装.底层事务接

     口包括:

 JDBC API

 JTA(java Transaction API)

 CORBA(common object request Broker architecture)

       5.Query和Criteria接口:都是查询接口,query实例

       包装了HQL查询语句,hql是面向对象的,他引用类

       名及类的属性名,而不是表名和字段名。Criteria接

       口完全封装了基于字符串形式的查询语句,比

       query接口更面向对象,他擅长执行动态查询。

       sessoin接口的find方法也具有数据查询功能,但他

       只是执行一些简单的hql查询语句的快捷方式,远没

       有query接口功能强大。

 

 

 

三、对象-关系映射

a)         在持久化类的方法中加入程序逻辑

  不管在类中是否存在name属性,只要在Customer.hbm.xml文件中映射了name属性,在hql语句中就能访问他。

<property>

 insert属性    若为false,在insert语句中不包含该字段,该字段永远不能被插入。默认值true。

<property>

 update属性  若为false,update语句不包含该字段,该字段永远不能被更新。默认值为true。

<class>

mutable属性  若为false,等价于所有的<property>元素的update属性为false,整个实例不能被更新。默认为true。

<class>

dynamic-insert属性      若为true,等价于所有的<property>元素的dynamic-insert为true,保存一个对象时,动态生成insert语句,语句中仅包含取值不为null的字段。默认false。

<class>

dynamic-update属性     若为true,等价于所有的<property>元素的dynamic-update为true,更新一个对象时,动态生成update语句,语句中仅包含取值不为null的字段。默认false。

 

 

四、映射对象标识符

a)         Java按地址区分同一个类的不同对象.

关系数据库用主键区分同一条记录.

Hibernate使用OID来建立内存中的对象和数据库中记录的对应关

系。对象的OID和数据库的表的主键对应。为保证OID的唯一性,应

该让Hibernate来为OID付值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值