hibernate框架学习第一天:hibernate介绍及基本操作
框架
辅助开发者进行开发,半成品软件,开发者与框架进行合作开发
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介绍及基本操作的更多相关文章
- [ SSH框架 ] Hibernate框架学习之二
一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...
- 框架学习笔记之Hibernate
一.什么是Hibernate Hibernate框架是当今主流的持久层框架之一,该框架是基于JDBC的主流持久化框架,使用它之后能够大大简化程序DAO层的代码量,提高工作效率,因此受广大开发人员的喜爱 ...
- j2ee开发之hibernate框架学习笔记
hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...
- Hibernate框架(一)——总体介绍
作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...
- hibernate框架学习笔记6:事务
MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...
- hibernate框架学习笔记3:API详解
Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...
- hibernate框架学习笔记2:配置文件详解
实体类: package domain; public class Customer { private Long cust_id; private String cust_name; private ...
- hibernate框架学习笔记1:搭建与测试
hibernate框架属于dao层,类似dbutils的作用,是一款ORM(对象关系映射)操作 使用hibernate框架好处是:操作数据库不需要写SQL语句,使用面向对象的方式完成 这里使用ecli ...
- [ 学习笔记 ] Hibernate框架学习之一
一.JavaEE开发三层结构和三大框架的对应关系: Struts2框架 -> 表现层 web层(MVC是表现层的设计模型) 业务层 service层 Hibernate框架 -> 持久层 ...
随机推荐
- zookeeper安装(集群)
Dubbo 建议使用Zookeeper 作为服务的注册中心.Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是基于这个特性,要将ZK 集群的节点数量要为奇数(2 ...
- 解决Navicat 出错:1130-host . is not allowed to connect to this MySql server,MySQL
1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入MySQL后,更改 "mysql" 数据库里的 " ...
- js静态方法与实例方法定义,js回调方法定义
主要为了回调方法,随便把静态言法和实例方法也回顾一下. <script type="text/javascript"> var fun = { //下面是静态方法(第一 ...
- 转: Linux 系统调用sysconf 获取系统配置信息
1.前言 linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数. 2.sysconf 函数 man一下sysconf,解释这个函数用来获取系统执行的配置信息.例如页大小. ...
- Tomcat连接池配置与实现/JNDI
方法一: 在Tomcat的conf/context.xml中配置在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下: <?xml ...
- asp.net上传图片,上传图片
想必很多人工作中经常需要实现上传图片的功能. 先引用此插件 http://files.cnblogs.com/files/hmYao/jquery-form.js. 前台代码 <form dat ...
- system("x")
system("pause");和system("cls")使用示例程序 #include "stdio.h" #include " ...
- ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
ubuntu16.04安装cuda8.0,tensorflow-gpu版本后,运行时报错: ImportError: libcudnn.so.5: cannot open shared object ...
- 执行sql,使用带参的写法
db.ExecuteNonQuery("UPDATE QU_QUALITYREPORT SET RETOSTATUS=1 WHERE BATCHID=@0 AND PROVINCEAREA ...
- 前端与后端的数据交互(jquery ajax+python flask)
前端与后端的数据交互,最常用的就是GET.POST,比较常用的用法是:提交表单数据到后端,后端返回json 前端的数据发送与接收 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收 ...