框架
辅助开发者进行开发,半成品软件,开发者与框架进行合作开发

Hibernate3
Hibernate是一种基于Java的轻量级的ORM框架
基于Java:底层实现是Java语言,可以脱离WEB,在纯JAVA环境下运行
轻量级:与重量级比对,消耗资源比较小,运算速度比较快
ORM:(ORMapping:Object Relation Mapping)对象关系映射
O:Java对象
R:关系型数据库表
M:映射(map:地图 映射)

对象与表的对应关系
1.类与表对应
2.类的属性与表的字段对应
3.类实例(对象)与表记录对应
4.一个类可以对应多个表,一个表可以对应多个类
5.类的属性个数与表的字段个数无需完全对应
类中有5个,表中有5个,只对应3个
6.类的属性名称与表的字段名称无需完全对应
7.对应关系中的数据类型必须是可转化的
8.表与表的关系转化成对象与对象的关系

Java操作数据库:JDBC+SQL
Hibernate可以帮助开发者实现自动的JDBC+自动的SQL语句
工程:
表现层
业务层(逻辑层)
数据层
Hibernate是一种数据层解决方案

数据层解决方案了解:
JDBC
JPA(Java Persistence API )
Hibernate实现JPA
iBatis/MyBatis
其他
Apache
Spring JDBCTemplate、HibernateTemplate、等等
Toplink

Hibernate有什么东西
系统架构图:描述一个技术中所有的相关模块,以及模块与模块之间的关系(上层依赖于下层)
图一:
应用程序 Hibernate 数据库
APP依赖H3 H3依赖DB
H3:需要进行配置
映射:需要使用XML格式
持久化对象:出现在APP于H3间,起桥梁的作用,连接APP与H3
图二:
H3裂变成5块
SessionFactory制作Session
JDBC,JNDI,JTA??
APP中包含一种叫做瞬时对象
APP与H3关联靠Session进行
图三:
H3依赖别人实现的JDBC,JTA,JNDI
H3存在有事务及事务工厂
H3的连接需要别人提供

-----------------------------------------------------------------
课程Hibernate3.6.10版本
下载Hibernate
http://sourceforge.net/projects/hibernate/files/hibernate3/
JBOSS
JBOSS服务器
Hibernate
jbpm

H3目录结构
documentation:帮助文档
lib:开发使用jar包
hibernate3.jar:核心jar包
project:源码
hibernate-testing.jar:测试包

H3开发jar包
一共9个+2个日志包,共11个
日志:
slf4j:简单日志门面
log4j:略
开发使用日志技术:
slf4j整合log4j的jar包:slf4j-log4j12-1.7.2.jar
log4j包:log4j-1.2.16.jar

Hibernate开发
O:对象,也就是封装数据的模型(开发者完成)
R:关系型数据库表(开发者完成)
M:映射关系(开发者完成)

1.创建工程
2.导入jar包
3.做表(R)
CREATE TABLE `tbl_user` (
`uuid` varchar(10) NOT NULL,
`userName` varchar(30) NOT NULL,
`age` int(3) NOT NULL,
`address` varchar(30) NOT NULL,
PRIMARY KEY (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
4.做模型类(O)
UserModel.class
private String uuid;
private String userName;
private Integer age;
private String address;
1.提供无参可访问的构造方法
2.声明一个主键属性(uuid)
3.声明其他的属性
4.提供对应的访问器(getter/setter)
5.映射文件(R)
在Model对应的目录下创建一个文件,名:****Model.hbm.xml
去资源中查找*.hbm.xml
把内容复制到对应的文件中
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
<!-- name写全路径模型名,table写DB中表名 -->
<class name="cn.itcast.h3.helloworld.vo.UserModel" table="tbl_user">
<!-- 模型中的主键名 -->
<id name="uuid">
<!-- assigned -->
<generator class="assigned" />
</id>
<!-- 将模型中的所有属性都写上,使用name -->
<property name="userName"/>
<property name="age"/>
<property name="address"/>
</class>
</hibernate-mapping>
6.系统配置文件
src/hibernate.properties(早期)
src/hibernate.cfg.xml(主流)
在src目录下创建 hibernate.cfg.xml
从资源包中查找资源
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库连接的配置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/h3</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 可选配置 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<!-- 资源注册 -->
<mapping resource="cn/itcast/h3/helloworld/vo/UserModel.hbm.xml"/>
</session-factory>
</hibernate-configuration>
8.客户端
//1.加载配置文件hibernate.cfg.xml,得到一个配置对象
Configuration conf = new Configuration().configure();
//2.由配置创建一个SessionFactory
SessionFactory sf = conf.buildSessionFactory();
//3.由SessionFactory得到Session
Session s = sf.openSession();
//4.由Session对象获取事务对象Transaction
Transaction t = s.beginTransaction();
//5.完成任务
//5.1创建一个要存储的对象
UserModel um = new UserModel();
um.setUuid("1");
um.setUserName("李若亮");
um.setAge(34);
um.setAddress("传智播客");
//5.2保存
s.save(um);

//6.提交事务
t.commit();
//7.关闭Session
s.close();
//8.关闭SessionFactory(略)
sf.close();

总结:
1.导包
2.ORM:O自己做UsreModel R自己做tbl_user M做映射文件hbm.xml
3.系统配置:cfg.xml
4.客户端

------------------------------------------------
基本操作
1.添加数据
save(obj) 返回的是添加的对象的uuid
2.修改数据
update(obj)
3.删除数据
delete(obj)
4.查单个数据
get(要查询的模型类.class,主键)
load(要查询的模型类.class,主键)
返回一个对象,该对象使用反射思想已经被包装成了要查询的模型类
5.查全部数据
1.Query
使用Query进行查询,Query对象需要依赖Session对象创建
String hql = "from UserModel";
Query q = s.createQuery(hql);
查询完毕,可以将查询结果直接以集合的形式展示
q.list();
得到一个查询结果(已经被封装成了Model)的集合
2.SQLQuery查询
使用SQLQuery查询,SQLQuery对象需要依赖Session对象创建
SQLQuery q = s.createSQLQuery(sql);
查询完毕,可以将查询结果直接以集合的形式展示
q.list();
结果是将每行查询的数据包装成了一个对象数组Object[]
每个数组中包装是当前查询的每个字段的内容

hibernate框架学习第一天:hibernate介绍及基本操作的更多相关文章

  1. [ SSH框架 ] Hibernate框架学习之二

    一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...

  2. 框架学习笔记之Hibernate

    一.什么是Hibernate Hibernate框架是当今主流的持久层框架之一,该框架是基于JDBC的主流持久化框架,使用它之后能够大大简化程序DAO层的代码量,提高工作效率,因此受广大开发人员的喜爱 ...

  3. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  4. Hibernate框架(一)——总体介绍

    作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...

  5. hibernate框架学习笔记6:事务

    MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...

  6. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...

  7. hibernate框架学习笔记2:配置文件详解

    实体类: package domain; public class Customer { private Long cust_id; private String cust_name; private ...

  8. hibernate框架学习笔记1:搭建与测试

    hibernate框架属于dao层,类似dbutils的作用,是一款ORM(对象关系映射)操作 使用hibernate框架好处是:操作数据库不需要写SQL语句,使用面向对象的方式完成 这里使用ecli ...

  9. [ 学习笔记 ] Hibernate框架学习之一

    一.JavaEE开发三层结构和三大框架的对应关系: Struts2框架 -> 表现层 web层(MVC是表现层的设计模型) 业务层 service层 Hibernate框架 -> 持久层 ...

随机推荐

  1. OPCServer:使用Matrikon OPC Server Simulation

    实验用模拟OPCServer 旧版(50M):Matrikon OPC Server Simulation(v1.5.0.0),百度网盘,密码: mcur 新版(157M):Matrikon OPC ...

  2. vertica系列:数据的导入导出

    本文仅涉及 Vertica 导入导出本地文件, 以及两个 Vertica 集群相互导出, 不涉及 Vertica 和 hdfs/Hive 导入导出和互操作. copy 数据导入工具 copy 命令无疑 ...

  3. WMware虚拟机中连接ios真机

    虚拟机中能看到IOS真机,但MAC OS看不到,进行如下设置虚拟机设置->USB控制器->USB兼容性->选择2.0

  4. 隐马尔可夫模型HMM(一)

    摘自 1.李航的<统计学习方法> 2.https://www.cnblogs.com/pinard/p/6945257.html 了解HMM模型 1.隐马尔可夫模型的定义 隐马尔可夫模型是 ...

  5. postfix 邮箱接收限制

    Postfix 限制 QQ 邮箱发送到 我的 test.com 域下邮箱. 1.编辑 main.cf  添加限制: smtpd_sender_restrictions = check_sender_a ...

  6. pyaudio

    安装: 下载whl文件:https://github.com/intxcc/pyaudio_portaudio/releases 切换到whl文件目录,直接用pip安装      pip instal ...

  7. String,StringBuffer,StringBulider

    StringBuffer.StringBuilder.String中都实现了CharSequence接口. CharSequence是一个定义字符串操作的接口,它只包括length().charAt( ...

  8. lua与C交互 具体

    什么样类型的函数可以被Lua调用 typedef int (*lua_CFunction) (lua_State *L); 符合类型的函数怎样处理后才可以被Lua调用 使用lua_register或者 ...

  9. steps/train_lda_mllt.sh

    LDA+MLLT指的是在计算MFCC后对特征进行的变换:首先对特征进行扩帧,使用LDA降维(默认降低到40),然后经过多次迭代轮数估计一个对角变换(又称为MLLT或CTC) .详见 http://ka ...

  10. 【网络爬虫入门03】爬虫解析利器beautifulSoup模块的基本应用

    [网络爬虫入门03]爬虫解析利器beautifulSoup模块的基本应用   1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.B ...