Hibernate学习笔记--使用ThreadLocal】的更多相关文章

参考资料: http://blog.sina.com.cn/s/blog_7ffb8dd5010146i3.html http://lavasoft.blog.51cto.com/62575/51926/ 一.问题的提出   我们知道Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一 个SessionFactory并从中获取Session实例,而Session不是线程安全的.Session中包含了数 据库操作相…
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.已经纳…
2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建立一种关系.Hibernate中可以通过操作对象的方式,从而操作数据库的表. 常见的持久层框架: Hibernate MyBatis JPA DBUtils Hibernate3.x和Hibernate4.x 2.Hibernate快速入门: 2.1 下载Hibernate开发包. http://s…
Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰到了两个Exception. 我们在使用hibernate的时候需要引入许多jar包,如果jar包少引入了或者版本老旧就会报错,下面是我遇到的两个Exception ,第一个是因为项目缺少slf4j-api.jar和slf4j-log4j12.jar这两个jar包.第二个是因为缺少log4j.jar…
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session有关Session由SessionFactory创建,是线程安全的Thread-Safe,可以让多个线程同时存取SessionFactory而不会有数据共享的问题 Hibernate中Session的解释 :http://blog.csdn.net/shrek_xu/arti…
1. ThreadLocal的理解 ThreadLocal,顾名思义,就是线程的本地变量,ThreadLocal会为每个线程创建一个本地变量副本,使得使用ThreadLocal管理的变量在多线程的环境下,每个线程都是访问的是自己内部的副本变量,将全局变量局部化,跟局部变量一样的使用,从而避免了一些线程安全的问题.比如在数据库连接池中获取的连接时,此时的连接对于每个线程来说,都应该是独立的,所以可以使用ThreadLocal来管理该线程的连接.从而避免在多线程环境下的连接的安全问题. 2. Thr…
SpringMVC:学习笔记(12)——ThreadLocal实现会话共享 ThreadLocal ThreadLocal,被称为线程局部变量.在并发编程的情况下,使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改.每个Thread对象内部都维护了一个ThreadLocalMap它可以存放若干个ThreadLocal.如下为Thread源码部分: /* ThreadLocal values pertaining to this thread. This map is…
一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法,能够大大减少开发人员使用JDK和SQL处理数据的时间. 2.Hibernate获取 Hibernate的官网是http://www.hibernate.org,需要的时候可以去官网上下载相关的版本. 3.Hibernate配置 在一个项目中有时候不需要Hibernate中的全部jar包,所以当项目…
1 框架体系结构 2 hibernate入门 2.1 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational:关系,二维表,数据库中的表. 映射|映射元数据:对象中属性,与表的字段,存在对应关系. 2.2 什么是hibernate l Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架 ORM 就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表…
Hibernate是对JDBC的轻量级封装,其主要功能是操作数据库.在操作数据库过程中,经常会遇到事务处理的问题,接下来就来介绍Hibernate中的事务管理. 在学习Hibernate中的事务处理之前,先来回顾一下什么是事务. 一.事务概述 1.1 什么是事务 在数据库操作中,一项事务(Transaction)是由一条或多条操作数据库的SQL语句组成的一个不可分割的工作单元.当事务中的所有操作都正常完成时,整个事务才能被提交到数据库中,如果一项操作没有完成,则整个事务会被回滚. 其实事务总结起…
我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440   Hibernate查询方式 1 对象导航查询 1)根据id来查询出某个客户,再查询这个客户里面的联系人 2 oid查询 1)根据id查询某一条记录,返回对象(利用session里面的get方法) 3 hql查询 1)Query对象,写hql语句   *查询所有 : from  实体类名称 *条…
我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440   *表与表之间的关系回顾(一对多) 1)分类与商品,一个分类可以有多个商品,一个商品只能属于一个分类   *表与表之间的关系回顾(多对多) 1)订单与商品,一个订单里面可以有多个商品,一个商品可以属于多个订单   *表与表之间的关系回顾(一对一) 1)在中国,夫妻关系便是一对一的关系     *…
Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装,Java程序员可以使用面向对象的编程思维来操纵数据库,它通过对象属性和数据库表字段之间的映射关系,将对象持久化到数据库中,可以说Hibernate就是将数据从对象形式转换成表字段后存入数据库的一种框架.hibernate移植非常好,因为它用到了方言配置,可以根据不同的数据库自动发出不同的sql. 1.环境准备: 1)去Hibernate官网下载最新的hibernate文件,笔者版本号为hibernat…
参考资料:Java Web核心框架 http://blog.csdn.net/lsh6688/article/details/7611950 补充:ThreadLocal的使用:http://www.cnblogs.com/gnivor/p/4440776.html Part 1.hibernate核心接口层次架构关系 图:hibernate核心接口层次架构关系 上图中,Hibernate的接口大致可以分为以下几种类型: 1. 基本操作类:一些被用户的应用程序调用的,用来完成基本的创建.读取.更…
1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1(多对一,一对多): http://www.cnblogs.com/zilong882008/archive/2011/11/05/2236559.html 3. Hibernate关联映射 http://www.cnblogs.com/huxi/archive/2009/12/15/1624988.…
一 准备工作 首先,我们将创建一个简单的基于控制台(console-based)Hibernate应用. 我们所做的第一件事就是创建我们的开发文件夹.并把所有需要用到的Java件放进去.解压缩从Hibernate站点下载的Hibernate公布包.并把全部须要的库文件拷到我们项目中去. 学习建User-library-hibernate,并增加对应的jar包 (a)项目右键-buildpath-configure build path-add library watermark/2/text/a…
如需转载,请说明出处:http://www.cnblogs.com/gudu1/p/6895610.html Hibernate通过关系映射来表示数据库中表与表之间的关系,关系映射可以通过两种方式:配置文件映射和注解映射,本文主要讲解配置文件映射. 关系映射: 1.单向关联关系,表示只有一方维护关系,而另一方并不知道有这种关系,在解除和删除关联关系的时候也要在有外键方进行,否则会抛出异常,因为有外键的约束. 2.双向关联关系.双方都维护关系,无论在哪一方解除和删除关联关系,Hibernate都能…
五.映射一对多关联关系 1. 单向多对一 即 单向 n-1 1)单向 n-1 关联只需从 n 的一端可以访问 1 的一端 ① 域模型: 从 Order 到 Customer 的多对一单向关联需要在Order 类中定义一个 Customer 属性, 而在 Customer 类中无需定义存放 Order 对象的集合属性 ② 关系数据模型:ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的主键 (多的那一端的数据表需要加上 s,否则建表不成功) 2)使用 many-to-one…
一,概念详解 1.持久化persistent 是指将内存中的数据保存到磁盘.数据库等存储设备中. 2.持久化对象:已经储存到磁盘或者数据库中的业务对象. 3.在java中对对象的持久化有三种方法: 1)序列化对象,将对象存放到格式化的文本文件中 2)将对象持久化到XML文档中 3)将对象持久化到数据库中,一般为关系数据库 关系数据库遵循的一条重要原则就是数据独立性,即数据可以独立于应用程序而存在 4.应用程序的三层结构 数据库层:存储需要持久化的数据.数据库对立与应用程序,提供了系统状态的一种持…
1.导包,包下载地址:http://hibernate.org/orm/downloads/ 2.创建数据库,准备表,实体.示例: CREATE TABLE `cst_customer` ( `cust_id` ) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` ) NOT NULL COMMENT '客户名称(公司名称)', `cust_source` ) DEFAULT NULL COMMENT '客户信息来源', `cust_…
Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactory创建时,自动将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema. 取值 update | create | create-drop 其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创…
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6760773.html  一:ORM ORM:对象-关系 映射. 即:把Java中有关联关系的对象,转换成关系型数据库里有主.外键关系的表中的记录,其转换的过程叫做映射,是通过配置文件实现的. 基于ORM的框架,就是实现了在编程时,脱离开繁杂的SQL语句,用面向对象的方式来操作数据,而框架则负责根据配置文件的配置而转换成具体的数据库语句并执行. 二:创建Hibernate项目 1:在Myeclipse中配置D…
作者:ssslinppp       1. 摘要 主要讲解N-1关系表的设计,N:从表,1:主表: 从表(N)中使用外键关联到主表(1),单向的: 场景: 许多人(N)可以住在同一个地方(1),知道人就可以知道这个人的地址: 反过来,知道地址,不能知道该地址住的人. 2. 数据表设计 地址表: Person表: e 3. 实体类-注解方式 Address.java package org.crazyit.app.domain; import javax.persistence.Column; i…
作者:ssslinppp       1. 摘要 关于日期类型,Java和数据库表示的方法不同: Java:只有java.util.Date和java.util.Calender两种: 数据库:date.time.datetime.timestamp等: 当在持久化类定义了一个java.util.Date类型的属性时,Hibernate到底将该类型的属性定义成date类型.time类型还是timestamp类型? 使用@Temporal注解: @Temporal: @Temporal(Tempo…
ORM映射关系:注解方式 package org.crazyit.app.domain; import javax.persistence.*; import org.hibernate.annotations.Formula; @Entity(name="news_inf") public class News { // 消息类的标识属性 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id;…
jar包 hibernate.cfg.xml <?xml version="1.0" encoding="GBK"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.d…
摘要 在Spring下整合Hibernate时,关于sessionFactory的配置方式主要有两种,分别为注解配置方式,和xml配置方式,下面将对这两种配置方式进行介绍. 1. sessionFactory和数据库对应,有多少个数据库,就需要配置多少个sessionFactory: 2. session相当于数据库连接,进行数据库的CRUD操作时,需要开启session,用完需要关闭session: 3. 配置sessionFactory,主要要配置如下三个方面:   3.1. 数据源配置:…
一.Hibernate的抓取策略 1.1 什么是抓取策略 抓取策略是当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略. HIbernate的抓取策略是Hibernate提升性能的一种手段,可以在获取关联对象的时候,对发送的语句进行优化,但是往往抓取策略需要和延迟加载一起使用来提升性能.我们首先来学习一下延迟加载的内容. 1.2 延迟加载的分类 延迟加载(lazy load)是(也称为懒加载)Hibernate关联关系对象默认的加…
一.对象图导航查询 对象图导航查询方式是根据已经加载的对象,导航到他的关联对象.它利用类与类之间的关系来查询对象.比如要查找一个联系人对应的客户,就可以由联系人对象自动导航找到联系人所属的客户对象.当然,前提是必须在对象关系映射文件上配置了多对一的关系.其检索方式如下所示: LinkMan linkMan = session.get(LinkMan.class, 1l); Customer customer = linkMan.getCustomer(); 二.OID检索方式 OID检索方式主要…
一.一对多|多对一 1.1 关系表达 1.1.1 表中的表达 建表原则:在多的一方创建外键指向一的一方的主键. 1.1.2 实体中的表达 [客户实体] public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cu…