hibernateUtils】的更多相关文章

hibernate3.x版本 package hibernate_01; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class hibernateUtils { private static Configuration cfg = null; private static SessionFactory sessi…
package com.istc.Utilities; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.springframework.stereotype.Repository; import javax.annotation.Resource; import java.io.File; /** * Crea…
package cn.itcast.utils; import java.sql.Connection; import java.sql.SQLException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.jdbc.Work; public class HibernateUtils…
1.定义 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式被称为命名查询. 2.创建表结构并添加测试数据 create table `student` ( `id` double , `age` double , `name` ) ); ','张三'); ','李四'); ','李四'); ','王五'); 3.建立持久化类和配置文件 3.1hibernate.cfg.xml配置文件 <?xml version='1.0' encoding='utf-8'?> &l…
Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个对象对应的数据为持久状态这个时候有OID. 游离状态:当Session关闭,缓存中不存在这个对象数据而数据库中有这个对象的数据并且有OID为游离状态. 注:OID为了在系统中能够找到所需对象,我们需要为每一个对象分配一个…
写好一篇博客,不是容易的事.原因是:你要给自己以后看的时候,还能看懂,最重要的是当别人看到你的博客文章的时候,也一样很清楚的明白你自己写的东西.其实这也是一种成就感!! 对于每一个知识点,要有必要的解释 语言及真实的代码. 今天呢,我就详细的写着 Hibernate框架的一种检索方式:Criteria查询.下面我写的这些案例,可能对于大牛没有什么好看的,但是对于初学者来说,却是一笔财富. 首先我们要知道的检索方式:  Hibernate框架提供了5种检索对象的方式      1.导航对象图检索方…
好久没有认真写过博客了,今天就好好的写一篇吧!!!!!!!!! 当Hibernate 从数据库中加载某个对象(例如:Dept对象)时,如果同时自动加载所有的关联的某个对象(例如:Emp对象),而程序实际上仅仅需要访问Dept对象,那么这些关联的Emp对象就白白浪费了许多内存空间.发生这种情况的原因是:就是立即加载的问题. 1.什么是立即加载呢? Hibernate 查询 Dept 对象时,立即加载并加载与之关联的Emp对象,这种查询策略称为 立即加载. 立即加载存在两大不足: 1.select…
一.综述 hibernate中的对象有三种状态,分别是TransientObjects(瞬时对象).PersistentObjects(持久化对象)和DetachedObjects(托管对象也叫做离线对象). 二.Hibernate对象三种状态转化图: 三.Hibernate对象三种状态简介及转化条件: (1)临时状态: 由Java的new命令开辟内存空间的java对象也就是普通的java对象,如果没有变量引用它它将会被JVM收回.简单的说就是程序里面new一个对象,还没有和session关联…
JPA执行原生SQL截断Char类型问题 在JPA的API中执行原生SQL:EntityManager.createNativeQuery(String sqlString); 传入参数是原生SQL语句,返回SQL对象. 如果oracle数据库中某个字段定义的是char类型,比方说是char[2],当使用EntityManager.createNativeQuery(String sql); 去查询这些值的时候,发现返回的结果集中只要数据库中是char类型的,都只返回一个字符. 原因:hiber…
SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,基于持久层的框架(数据访问层使用)! Spring,创建对象处理对象的依赖关系以及框架整合! Dao代码,如何编写? 1.操作XML数据 2.使用Jdbc技术 3.原始的jdbc操作, Connection/Statement/ResultSet a.自定义一个持久层框架, 封装了dao的通用方法 b.DbUtils组件, 轻量级的dao的组件: c.Hibernate技术  [hibernate最终执行的也…
Hibernate联合主键映射以及组件映射 在Hibernate中联合主键的形成有两种可能:一种是由多对多映射形成的,多对多映射会形成第三张表,一般来说第三张表的主键是由其他两张表的主键构成的(比如学生表,课程表,选课表).第二种情况就是很常见的情况,即只有一张表,表的主键是由本身的两个字段或以上构成的.比如:公司的财务统计表,其中有字段年份.月份.销售金额.在这张表中年份和月份才唯一确定一条记录.下面就来说说联合主键第二种情况的配置,就以上面的财务统计表来说明.对于联合主键的这种情况,我们经常…
关于关联关系的配置,用注解配置如下(这里引用的jar包是javax.persistence) // @ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="supplier_id",nullable=true) private Supplier supplier; 用xml文件配置如下,这个跟注解配置有些不同,就不详解了,反正我也不会用xml配置 例子 /* 使用HQL对查…
关于hibernate的简单配置,先看结构图,我们需要 1.还要弄一下需要的 jar包. 2.配置两个文件(hibernate配置文件和映射文件),不过映射文件可以用注解替代. 3.写一个pojo类,写一个示例demo 1.关于jar包,下载网站http://hibernate.org/orm/downloads/ 下载的完整版的压缩包,解压后,lib里有一个required,这个基本就是需要的jar包,如果有别的需求再另加. 另外,这里边没有连接数据库的包(比如连接mysql的mysql-co…
事务:事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!! 事务特性 原子性:事务一组操作不可分割. 一致性:事务的执行前后,数据完整性要保持一致. 隔离性:一个事务在执行的过程中不应该受到其他事务的干扰. 持久性:一旦事务结束,数据就永久保存数据库. 如果不考虑事务的隔离性引发一些安全性问题: 5大类问题:3类读问题 2类写问题. 读问题: 脏读 :一个事务读到另一个事务未提交数据. 不可重复读 :一个事务读到另一个事务已经提交数据(update),导致查询结果不一致. 虚读 :一个事务…
立即检索:当执行某行代码的时候,马上发出SQL语句进行查询(get())延迟检索:当执行某行代码的时候,不会马上发出SQL语句进行查询.当真正使用这个对象的时候才会发送SQL语句(load()) 类级别检索和关联级别检索 类级别的检索:<class>标签上配置lazy 关联级别的检索:<set>/<many-to-one>上面的lazy 从一的一方关联多的一方(<set>) fetch:控制sql语句的类型 join :发送迫切左外连接的SQL查询关联对象.…
Hibernate的检索方式 检索方式(查询的方式) 导航对象图检索方式: 根据已经加载的对象导航到其他对象 Customer customer = (Customer)session.get(Customer.class,1); customer.getOrders();// 获得到客户的订单 OID 检索方式: 按照对象的 OID 来检索对象 get()/load();方法进行检索. HQL 检索方式: 使用面向对象的 HQL 查询语言 Query query = session.creat…
实体之间的关系 实体之间有三种关系 一对多:一个用户,生成多个订单,每一个订单只能属于一个用户 建表原则:在多的一方创建一个字段,作为外键,指向一的一方的主键 多对多:一个学生可以选择多门课程,一个课程可以被多个学生选择 建表原则:创建第三张表,中间表至少有两个字段,分别作为外键指向多对多双方主键 一对一(很少用,因为其实可以将两张表建成一张表):一个公司只能有一个注册地址,一个注册地址,只能被一个公司使用 建表原则 唯一外键:一对一的双方,假设一方是多的关系.需要在多的一方创建一个字段,作为外…
Hibernate的一级缓存 什么是缓存:缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取 缓存的好处:提升程序运行的效率.缓存技术是Hibernate的一个优化的手段 Hibernate分成两个基本的缓存: 一级缓存:Session级别的缓存.一级缓存与session的生命周期一致.自带的.不可卸载. 二级缓存:SessionFactory级别的缓存.不是自带的. 在 Session 接口的实现中包含一系列的 Java 集合, 这些 J…
最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.spring.io/release/org/springframework/spring/4.0.0.RELEASE/ 最新版hibernate下载地址:hibernate4.2.21 https://sourceforge.net/projects/hibernate/postdownload?source…
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映射. 瞬时态 transisent:(临时态) 持久态 persistent 脱管态 detached:(离线态) 1.1.2 三种持久化对象的状态 Transient瞬时态:持久化对象没有唯一标识OID.没有纳入Session的管理. Persistent持久态:持久化对象有唯一标识OID.已经纳…
hibernate的一级缓存的存在使得hibernate可以在操作实体化对象的时候减少对于数据库的访问.hibernate的一级缓存实际上就是指的session缓存,它的生命周期和session相同.hibernate通过Map来实现一级缓存,Map里存储了持久化类的更新后的状态以及持久化类的副本(又称为快照). hibernate的session对象于一级缓存相关的结构图如下图所示: 下面通过在eclipse环境下debug,来观察一级缓存在session进行刷新的时候,所涉及到的数据结构和操…
[java] view plaincopyprint? <<精通Hibernate java对象持久化技术详解>> ,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flush()方法,然后提交事务. 提交事务意味着对数据库所做的更新会永久保持下来 所谓清理,是指Hibernate 按照持久化象的状态来同步更新数据库 Flush()后只是将Hibernate缓存中的数据提交到数据库,如果这时数据库处在一个事物当中,则数据库将…
一.搭建Hibernate开发环境,这里就不说了,直接说环境搭好后的事情. 二.项目的目录结构…
开源项目(1)Hibernate基本使用 Hibernate介绍 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 官网  http://hibernate.org/ 以下为其原理和基本的结构示意图 一步一步简单讲述其基本应用 1.创建java项目,添加hibernate引用 下载地址: https://sourceforge.net/projects/hibernate/files/hi…
l当session加载了某个对象后,会为该对象的值类型的属性复制一份快照.当刷出缓存时,通过比较对象的当前属性和快照,来判断对象的哪些属性发生了变化. 代码如下: /** * 修改学生信息 */ @Test public void update(){ Session session = HibernateUtils.getSession(); Transaction transaction = session.beginTransaction(); try { Student stu = (St…
1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码. ②.Hibernate 是一个基于JDBC的主流持久化框架,是一个优秀的ORM 实现.他很大程度的简化DAO层的编码工作 ③.hibernate 的性能非常好,因为它是个轻量级框架.映射的灵活性很出色.它支持各种关系数据库,从一对一到多对多的各种复杂关系. 开发流程 2.什么是延迟加载?     延迟加载机制是为…
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数据表查询操作详解  ,以至于看这篇文章不用那么吃力. --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.cla…
jar包下载地址 创建一个web项目. 导入jar包 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="…
hibernate提供的一级缓存 hibernate是一个线程对应一个session,一个线程可以看成一个用户.也就是说session级缓存(一级缓存)只能给一个线程用,别的线程用不了,一级缓存就是和线程绑定了. hibernate一级缓存生命周期很短,和session生命周期一样,一级缓存也称session级的缓存或事务级缓存.如果tb事务提交或回滚了,我们称session就关闭了,生命周期结束了. 缓存和连接池的区别:缓存和池都是放在内存里,实现是一样的,都是为了提高性能的.但有细微的差别,…
1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. Statement:负责执行SQL语句. PreparedStatement:负责执行SQL语句,具有预定义SQL语句的功能. ResultSet:代码SQL查询语句的查询结果集. 2.常用的ORM中间件: Hibernate\Mybatis\Toplink\Torque\ObjectRelationBrid…