hibernate笔记

Hibernate笔记

Hibernate:冬眠

Struts框架:是MVC框架

Hibernate是一个操作数据库的框架

操作数据库的发展:

1.  直面数据库

功能没有问题,但操作非常原始,需要专业知识

2.  JDBC

JavaDataBase Connection

java专门针对数据库操作封装的类和接口,简化操作数据库

Connection,Statement,DriverManager,ResultSet

拼凑SQL语句,安装规范建立和数据库的链接,基于连接操作,数据库返回对应的结果

缺点:每次操作数据库都需要上述的过程,拼凑---连接---执行---结果;没有可复用性

3.  DAO

DataAccess Object

工具类,里面封装操作数据库的具体的功能和方法,然后调用即可

标准的DAO的结构:

一组实体Bean

一个数据库公共类

一组DAO接口,规定操作数据库的方法

n组DAO接口的实现类,实现不同数据库产品操作数据库的具体的代码

一个工厂类动态决定产生那一组DAO接口的实现类的对象

4.  为了解决数据库操作建立连接,维护连接,关闭连接的资源消耗,实际场合使用了一个“数据库连接池”技术

 

操作数据库的过程进一步简化和封装

不同数据库的选择在配置文件里面体现

数据库连接需要在配置文件里面提供连接数据库的信息

以前SQL需要自己拼凑,掌握数据库和java两种技术

Stringsql = "  ";

实体Bean 和数据库表一一对应的关系

利用java的反射机制根据传递进来的数据分析其对应的表名,分析其属性对应的列名,利用java代码自动拼凑以前我们需要手工拼凑的SQL代码

使用Hibernate框架的流程:

1.  创建项目(无论桌面项目还是Web项目)

2.  添加数据库驱动

3.  添加Hibernate的支持

1.  自动创建一个配置文件

2.  暂时不创建SessionFactory类

4.  完善配置文件

 

 

数据库表包含所以的信息《===》实体类+映射文件

 

Hibernate目的:用面向对象的方式操作关系型数据库

途径(核心):ORM

PO:以前叫实体Bean,Persistence Object(还有Transient Object)

Hibernate:把数据在瞬时态和持久态之间转换

 

 

回顾:

Hibernate框架,操作数据库,OO方式操作关系型数据库,ORM

类似的框架还有很多

利用数据库表和po对象及映射文件间的一一对应的关系,可以双向自动产生

推荐正向

Hibernate对于表里面主键的要求,理解

配置文件---数据库连接

提供了get/load,save,delete,update

对于我们,需要手工编写DAO方法,实现方法(基于上面提供的基础操作的方法)

l  Hibernate提供的HibernateSessionFactory的功能:

l  show_sql属性的添加

l  hbm2ddl.auto属性的添加

值:create

l  Log4j

l  主键的生成策略

序列,标识列(一种常用的主键的使用方式,但是,不是唯一的方式)

<generator class="native"></generator>

Oracle里面的序列:class="sequence"

SQLServer里面的标识列:class="identity"

 

其他的生成策略:

用户自己输入:assigned

系统自动生成字符串:uuid

 

l  配置文件hibernate.cfg.xml

数据库连接的细节信息

Configurationconf = new Configuration().configure();

来读取

第二种形式:

src下的hibernate.properties文件

Configuration conf = new Configuration();来读取

特殊:映射文件的添加需要通过addResource()方法来添加

第三种形式:

不写任何形式的配置文件

Configuration conf = new Configuration();

conf.setProperty(key,value);

conf.addResource();

练习:

1.  抽象类,接口---匿名的实现

2.  另外的2种配置文件的实现

关系映射:

如何在PO里面体现数据库里面的关系,如何在映射文件里面配置关系

单向1:N

实例:学生和成绩(1:N)

学生里面有成绩,成绩里面没有学生

从PO对象的角度来讲,学生PO里面有成绩信息(多个)è把成绩作为学生的属性就可以

 

 

回顾:

1.  配置文件和配置信息的变化:XML,属性文件,通过代码提供

2.  属性的可选的配置:show_sql  hbm2ddl.auto

3.  主键生成策略:native(sequence,identity),uuid,assigned

4.  数据库里面的数字和java里面的对应关系

5.  关系的映射:如何把数据库里面主外键关系反映在java里面,数据的使用对象属性的引用;映射文件里面需要把这样的数据引用和主外键关系关联起来

自动生成的外键对于我们使用Hibernate来讲,是手段不是目的

 

多对1:多方里面有1方的数据,PO里面有1方的属性的引用,映射文件里面需要在多方映射;数据库表里面的外键依然在多方所对应的表

<many-to-one/>

 

hibernate的查询

1.  HQL语言:

    SQL:Structed Query Language 结构化查询语言 针对关系型数据库的操作的语言

    HQL:Hibernate Query Language  Hibernate查询语言,利用Hibernate框架间接查询数据库表的语言

使用SQL,直面数据库,眼前:表,列

使用HQL,不面对数据库,眼前没有:表,列,有:PO,property

HQL语法:

[select] from PO as user 名称 [where user.username=?]

一般意义上,使用除主键之外的条件,查询的结果类型?

通过session创建Query对象,执行list方法,完成查询

2.  传统的SQL代码查询

通过session创建SQLQuery对象,调用list方法完成查询

3.  Criteria方式查询

通过session创建Criteria对象

相当于select * from 对象所对应的表;

4.  数据过滤

Session和SessionFactory

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值