Hibernate 和快照
8.Oracle中的数据类型
9.Oracle中的伪列
Rowid和RowNum
Rowid
Rownum:在内存中形成一个不断裂的自增列
--最重要的。就是Oracle分页
我想要emp中的第二页数据,4--6
9.Oracle分页三层嵌套 :性能最高
select * from
(
Select emp.*,rownum as rn
from
(
select * from emp
)emp
where rownum<=9
)
where rn>=7
这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。
10.第一个入门案例
1.构建了一个Student实体类
public class Student {
private Integer id;
//name
private String name;
//age
private Integer age;
}
2.构建一个大配置
在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">oracle.jdbc.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">sb</property>
<property name="connection.password">sb</property>
<!-- 输出所有 SQL 语句到控制台。 -->
<property name="hibernate.show_sql">true</property>
<!-- 在 log 和 console 中打印出更漂亮的 SQL。 -->
<property name="hibernate.format_sql">true</property>
<!-- 方言 -->
<property name="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect</property>
<!-- 关联小配置 -->
</session-factory>
</hibernate-configuration>
3.构建小配置,和实体类对应的
Student.hbm.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.happy.entity">
<class name="Student" table="Student">
<id name="id" type="int" column="id">
</id>
<property name="name" type="string" column="name"/>
<property name="age" type="int" column="age"/>
</class>
</hibernate-mapping>
4.测试代码
对session进行探究。
Session.save(stu);
package cn.happy.test;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import cn.happy.entity.Student;
public class H_01Test {
@Test
public void testAdd(){
//1.1构建一个学生对象
Student stu=new Student();
stu.setAge(18);
stu.setName("2016年8月28日09:21:09训练营");
stu.setId(3);
//1.2 找到和数据库的接口 xxx========session--->sessionFactory--->configure.buildSessionFactory()
//咱们要想打通和db通道
Configuration cf=new Configuration().configure("hibernate.cfg.xml");
SessionFactory factory = cf.buildSessionFactory();
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
//1.3保存
session.save(stu);
tx.commit();
session.close();
}
}
11.ORM
Object Relational Mapping 对象/关系 映射
Object(对象)Java Java实体类 Public class Student{ Priavte Integer age; Private Integer id; Private String name; } |
Mapping (hbm配置文件) <class name=”Student” table=”Student”> <id name=”id” column=”id”> </id> <property name=”name” column=”name”/> </class> |
Relational(关系) DB 关系型数据库 Sql sever mysql oracle Student Id Number Age Number Name nvarchar2(32) |
12.Hibernate定位
HIbernate是一款实现了ORM思想的框架
JDO
TOpLink
13.用HIbernate实现删除,修改和查询
/**
* 1.1 删除学生
*/
@Test
public void delTest(){
Session session = HibernateUtil.getSession();
Student stu=new Student();
stu.setId(2);
Transaction tx = session.beginTransaction();
session.delete(stu);
tx.commit();
HibernateUtil.closeSession();
System.out.println("del ok!");
}
/**
* 1.2 修改学生
*/
@Test
public void updateTest(){
Session session = HibernateUtil.getSession();
//不被上下文跟踪对象
/*Student stu=new Student();
stu.setId(3);
stu.setName("微冷的雨训练营");*/
//方式二:如何用呗上下文跟踪的方式
//检索出一条记录,一个实体对象
Student stu= (Student)session.load(Student.class,3);
stu.setName("金龙加油!!!!");
Transaction tx = session.beginTransaction();
session.update(stu);
tx.commit();
HibernateUtil.closeSession();
System.out.println("update ok!");
}
Hibernate的一级缓存:快照区
现在我们详细的说一下一级缓存的结构
转载于:https://www.cnblogs.com/WuXuanKun/p/5817466.html
Hibernate 和快照相关推荐
- hibernate的快照更新
对于hibernate的快照更新的理解: hibernate在获得持久化对象时,会在一级缓存和快照区同时保存一份相同的原始数据.在对数据进行过更新维护之后,提交事务时hibernate会自动将数据与快 ...
- 【Hibernate一】概述及入门
Hibernate学习框架: 1.基本部分 crud的操作 主键的生成机制 类型 持久化类 映射文件 *.hbm.xml 配置文件 hibe ...
- 框架-Hibernate
Hibernate第一天 1. 搭建Hibernate环境 搭建Hibernate开发环境 数据库: DROP TABLE IF EXISTS `cst_customer`; CREATE TABLE ...
- spring 5.x(1)-----Spring Framework 5.x中的新功能
Spring Framework 5.x中有什么新功能 5.1版中的新功能 一般核心修订 基础设施: 在类路径和模块路径上对JDK 11的无警告支持. 支持Graal原生图像约束(反射,参数名称). ...
- SSH框架电力项目八--运行监控的保存
需求分析:保存运行监控文本内容到数据库,并再次查询后回显. 页面中调用保存的函数 function checkchar(){if(document.Form2.stationRun.value.len ...
- BOS物流管理系统-第五天
BOS物流管理系统-第五天-定区管理-WebServcie远程调用 主要内容: 分区设置-导出(分区条件查询后的结果导出为Excel-POI生成Excel和文件下载) 定区管理---定区添加(定区关联 ...
- Hibernate学习—— 一级缓存快照
上一篇说到,Hibernate框架中,对象转化为持久化状态后,会在事务提交时,自动将对象属性存储到数据库,而在事务提交之前,我们是对哪里的对象进行操作呢,这就是一级缓存(Session缓存)的作用. ...
- Hibernate框架第二天
### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为 ...
- Hibernate的一级缓存
Hibernate的一级缓存 什么是缓存:缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取 缓存的好处:提升程序运行的效率.缓存技术是Hibe ...
最新文章
- python拟牛顿法迭代点绘制_拟牛顿法python
- 推荐 7 个牛哄哄 Spring Cloud 实战项目
- mysql snmp agent_WebNMS SNMP Micro Agent for MySQL - MySQL Management Console
- python基础之删除文件及删除目录的方法
- Flux架构小白入门笔记
- Redis Cluster集群架构实现
- java stream 多个filter_如何在Java Stream上应用多个过滤器?
- 链表选择排序算法功能实现演示
- 勒索病毒入侵中国, Splunk建议网络立即进行区分和隔离设置
- aix查看oracle进程内存,Aix 查看进程占用内存大小(按从大小排列)
- 第五课 vim基本用法、bash编程初步和for循环
- android 8.1.0怎么截屏,vivo Z1i怎么截屏?4种vivo Z1i截图方法
- 天寒宜早睡,梦醒闻雪声,倒计时83
- Node.js连接MySQL数据库
- retrofit + rxjava2报错java.lang.IllegalStateException:Excepted a String but was BEGIN_OBJECT at line..
- Steve Jobs Said
- Python量化交易平台:QMT (日内交易策略示例)
- 学习初期 荆棘之路
- 如何查mysql里有多少条数据_mysql快速查询数据库中有多少条数据
- 视频直播常见问题与解决办法汇总