1-5 hibernate学习笔记(11-14章)
一,概念详解
1.持久化persistent 是指将内存中的数据保存到磁盘、数据库等存储设备中。
2.持久化对象:已经储存到磁盘或者数据库中的业务对象。
3.在java中对对象的持久化有三种方法:
1)序列化对象,将对象存放到格式化的文本文件中
2)将对象持久化到XML文档中
3)将对象持久化到数据库中,一般为关系数据库
关系数据库遵循的一条重要原则就是数据独立性,即数据可以独立于应用程序而存在
4.应用程序的三层结构
数据库层:存储需要持久化的数据。数据库对立与应用程序,提供了系统状态的一种持久化表现形式。
表示层:提供了与用户交互的接口。实现用户操作界面,展现用户需要的数据。
业务逻辑层:完成业务流程,处理表示层提交的数据请求,并将要保存的数据交给数据库。
由于业务逻辑层还要操作数据库,所以又分离出持久层单独进行数据的增删改查。
5.常见的持久层框架:hibernate、iBatis、JDO等。
6.对象-关系映射 (Object/Relation Mapping)简称ORM
7. hibernate是一个开源的ORM框架,它对JDBC进行了轻量级的封装。
8.2001年发布了hibernate的第一个正式版本,
2003年六月,hibernate2
2005年三月,hibernate3
9.可以用hibernate.properties或者hibernate.cfg.xml来配置和底层数据库的连接信息。更多的使用XML形式的配置文件。
10. hibernate 5个核心接口:configuration,sessionFactory,session,transaction,query
11.编写POJO(plain old java object)映射类User.java
所有的持久类中必须拥有一个默认的构造方法,访问权限至少为包访问权限控制
各个属性都要有getters和setters方法
要有一个标识属性
建议不要将持久化类声明为final.
12.编写映射文件User.hbm.xml和hibernate.cfg.xml配置文件。
如果同时存在xml和properties配置,xml会覆盖properties
hibernate.connection.pool_size:配置连接池中所拥有的最大连接数。
初始化时先创建一定数量的数据库连接放入到连接池中,需要时取走,用完后放回,可以再次被别的使用。无论数据库的连接是否被请求使用,连接池都将一直保证其所拥有的连接数。
13.编写辅助工具类,HibernateUtil.Java
1)Configuration cf=new Configuration().configure();
当执行new时,先在classPath的跟目录下找properties,如果有则把配置加载进去。
当执行.c当执行.configure()时,在根目录下找xml,如果配置了xml,则加载xml,如果配置重复,则xml会覆盖properties中设置的属性。
configure()可传去path参数
2) sessionFactory是线程安全的,可以被多个线程共享是sessionFactory实例重量级的,其创建过程耗时切占用资源多,因此在应用中只创建一次。只有应用中存在多个数据源时才为每个数据源创建一个sessionFactory
3) hibernate session使用了延时加载机制,只有在真正访问数据库时才从连接池中获取数据库连接。
session不是线程安全的,ThreadLocal模式可以解决此问题。
14.DAO指的是数据库访问对象,J2EE开发人员常常使用DAO设计模式将底层的的数据访问逻辑和上层的业务逻辑分离。
DAO模式是标准的J2EE设计模式之一,一个典型的DAO实现需要以下几个组件,
一个DAO接口,
一个DAO接口的具体类
一个DAO工厂类
数据传递对象或称值对象POJO
可以不创建DAO工厂类,使用工厂类的好处是当需要替换DAO的实现类时,只需要修改DAO工厂中的方法代码,而不需要修改所有数据库操作的代码。
1-5 hibernate学习笔记(11-14章)的更多相关文章
- thinking in java学习笔记:14章 类型信息
14.2 Class 对象 https://github.com/zhaojiatao/javase 1.什么是Class对象,Class对象是用来做什么的? Class对象是java程序用来创建类的 ...
- HTML5与CSS3基础教程第八版学习笔记11~15章
第十一章,用CSS进行布局 开始布局注意事项 1.内容与显示分离 2.布局方法:固定宽度和响应式布局 固定宽度,整个页面和每一栏都有基于像素的宽度 响应式布局也称为流式页面,使用百分数定义宽度 3.浏 ...
- 《机器学习实战》学习笔记——第14章 利用SVD简化数据
一. SVD 1. 基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (3)缺点: ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
- JVM学习笔记-第六章-类文件结构
JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...
- Stealth视频教程学习笔记(第一章)
Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- SQL反模式学习笔记11 限定列的有效值
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
- SQL Server2012 T-SQL基础教程--读书笔记(1-4章)
SQL Server2012 T-SQL基础教程--读书笔记(1-4章) SqlServer T-SQL 示例数据库:点我 Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的 ...
随机推荐
- webTest-----webUI自动化框架
webTest框架介绍 地址 https://github.com/wuranxu/webTest 希望大家能够喜欢!!! 简介 本框架基于Python3+selenium3+unittest组成,用 ...
- PV和UV的简单记录
1.什么是PV值 PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量.具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多少次.PV ...
- Winform中TextBox控件开启自动提示补全功能
问题:Winform开发中,有一个TextBox控件用以输入姓名,现希望在输入名字时能够自动提示所有可能的名字. 解答:winform中的TextBox控件含有如下三个属性: ① AutoComp ...
- 初次接触:DirectDraw
第六章 初次接触:DirectDraw 本章,你将初次接触DirectX中最重要的组件:DirectDraw.DirectDraw可能是DirectX中最强大的技术,因为其贯穿着2D图形绘制同时其帧缓 ...
- Parallel中分区器Partitioner的简单使用
Partitioner.Create(1,10,4).GetDynamicPartitions() 为长度为10的序列创建分区,每个分区至多4个元素,分区方法及结果:Partitioner.Creat ...
- Caused by: java.lang.ClassNotFoundException: org.jbpm.pvm.internal.processengine.SpringHelper
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- B2C经典查询,统计 绝对用的上,根据日期分组统计当天各种支付方式的销售数量和销售额
declare @sql varchar(8000) set @sql = 'select CONVERT(varchar(10), OrderDate, 120) as 日期' select @sq ...
- 使用NPOI导入导出标准Excel
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- IOS开发之XCode学习007:UIWindow对象
此文学习来源为:http://study.163.com/course/introduction/1002858003.htm #import "AppDelegate.h" @i ...
- template.process(root, out)的用法(shiro项目中来的九)
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8" ...