![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hibernate
文章平均质量分 67
「已注销」
这个作者很懒,什么都没留下…
展开
-
Hibernate概念
Hibernate概念Hibernate 是一个开放源代码的 O/R Mapping 持久化框架(中间件),它对JDBC进行了轻量级的封装,使Java程序员可以随心所欲地使用面向对象编程思维来操纵数据库。Hibernate内部封装了JDBC、JTA(Java Transaction API)和JNDI,JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate...原创 2018-05-08 14:51:58 · 629 阅读 · 0 评论 -
Session的缓存与Hibernate对象
Session的缓存Java对象的生命周期如果希望一个Java对象一直处于生命周期中,就必须保证至少有一个变量引用它,或者在一个Java集合中存放了这个对象的引用。Session的缓存Session对象中维护的缓存即称为Hibernate的一级缓存(first cache)在Session接口的实现类中定义了一系列的Java集合,这些Java集合构成了Session的缓...原创 2018-06-06 00:22:09 · 132 阅读 · 0 评论 -
06. 继承关系映射
继承关系映射继承关系映射分为三种:整个继承结构映射一张表每个类映射一张表有多少个类就映射多少张表,包括子类父类每个具体子类映射一张表只需要每个子类映射一张表,而父类不映射到表用到的例子在研究继承关系映射时,我们用到了一个继承关系的例子。父类:BillingDetails(账单明细)id:Longowner:String(拥有者)code:Strin...原创 2018-05-30 00:30:51 · 251 阅读 · 0 评论 -
Hibernate概念及体系结构
Hibernate概念及体系结构Hibernate概念Hibernate 是一个开放源代码的 O/R Mapping 持久化框架(中间件),它对JDBC进行了轻量级的封装,使Java程序员可以随心所欲地使用面向对象编程思维来操纵数据库。Hibernate内部封装了JDBC、JTA(Java Transaction API)和JNDI,JDBC提供底层的数据访问操作,只要用户提供了相...原创 2018-05-30 00:33:07 · 670 阅读 · 0 评论 -
ORM概念
ORM概念JDBC的缺陷将和数据库交互(CRUD)的代码硬编码到JDBC程序中实现见状的持久化层需要高超的开发技巧,而且编程量很大对象模型和关系模型的转换非常麻烦ORM(O/R Mapping:对象关系映射)一种将内存中的对象保存到关系型数据库中的技术负责实体域对象的持久化,封装数据库访问细节ORM提供了实现持久化层的另一种模式,采用映射元数据(XML)来描述...原创 2018-05-30 00:33:28 · 430 阅读 · 0 评论 -
ORM的常见实现
ORM的常见实现HibernateHibernate 是一个开放源代码的 O/R Mapping 框架(中间件),他对JDBC进行了轻量级的封装,使Java程序员可以随心所欲地使用面向对象编程思维来操纵数据库。iBATISiBATIS也是开放源代码的O/R Mapping框架,但这是一种“半自动化”的ORM实现。所谓“半自动”,iBATIS以SQL开发的工作量和数据库移植性...原创 2018-05-30 00:33:46 · 1287 阅读 · 0 评论 -
01. Hibernate程序的开发流程
Hibernate程序的开发流程数据库中创建表定义持久化类/实体类(POJO)实际上也是JSP中的JavaBean创建hibernate.cfg.xml或hibernate.properties核心的Hibernate配置文件,主要用来配置任意关系型数据库进行连接用到的参数(Driver、URL、User和Password)以及其他杂项的配置。hibernate.c...原创 2018-06-06 20:53:19 · 158 阅读 · 0 评论 -
02. SessionFactory对象的创建方式和Property的使用
SessionFactory对象的创建方式和Property的使用Hibernate 5.x创建SessionFactory/*创建Configuration对象,并读取指定的Hibernate核心配置文件*/Configuration config=new Configuration();config.configure("hibernate.cfg.xml");/*创建...原创 2018-06-06 20:54:15 · 297 阅读 · 0 评论 -
03. 映射文件的加载方式和Hibernate.properties的使用
映射文件的加载方式和Hibernate.properties的使用映射文件的加载方式我们通常将Hibernate的映射文件配置在Hibernate的核心配置文件中,因此当Configuration对象加载配置文件时,也会加载配置在其中的映射文件。如果没有配置映射文件,则在执行数据库操作时会找不到实体类,发生 org.hibernate.MappingException 异常,告诉我们 ...原创 2018-06-06 20:54:45 · 1160 阅读 · 0 评论 -
04. Hibernate连接池的使用
Hibernate连接池的使用Hibernate中有内置的连接池,当我们配置好连接参数后实际上采用的就是默认的的内置连接池,且最大连接数量为1。 <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property>然...原创 2018-06-06 20:55:17 · 1576 阅读 · 0 评论 -
01. SessionFactory 和 Session 的特点
SessionFactory 和 Session 的特点SessionFactory 的特点是线程安全的,SessionFactory对象可以被多个线程共享是重量级的,创建和销魂该对象很消耗系统资源,不要轻易地去创建和销魂,一般在应用程序启动初始化时去创建该对象。如果应用只访问一个数据库,只需要创建一个SessionFactory对象,如果应用同时访问多个数据库,则需要为每个数...原创 2018-06-06 20:55:45 · 248 阅读 · 0 评论 -
01. Hibernate配置文件属性和常见映射元素
Hibernate配置文件属性和常见映射元素核心配置文件常见配置属性 属性 描述 hibernate.connection.driver_class 指定数据库的驱动类 hibernate.connection.url 指定数据库的URL hibernate.connection.username 指定数据库的用户名 hiber...原创 2018-06-06 20:57:06 · 221 阅读 · 0 评论 -
02. Hibernate各种主键生成策略和配置详解
Hibernate各种主键生成策略和配置详解1. assigned主键由外部程序负责生成,在 save() 之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免。<id name="id" column...原创 2018-06-06 20:58:03 · 139 阅读 · 0 评论 -
03. 关联关系映射(一对一)
关联关系映射一对一关联关系表结构中关系为一对一,那么类结构中也是一对一的关系。表结构层面上,一对一的关系都是双向的,从任何一侧表都可以访问到对方另一侧表中的内容。而类一对一的关联关系可以分为单向和双向两种。双向表示在两个关联的类中,都存放对方类信息,并提供相应的获取和设置方法;单向表示只在某一侧存放另一方的信息,我们只能从这一方去访问另一方,而不能从另一方访问这一方。一对一单向...原创 2018-06-06 20:58:33 · 229 阅读 · 0 评论 -
04. 关联关系映射(一对多)
关联关系映射一对多双向关联关系(Order和OrderLine)我们使用订单(Order)和订单项(OrderLine)来演示这种关系一对多双向关联关系的表结构Order表CREATE TABLE t_order( id number(10) PRIMARY KEY, ordered_date date NOT NULL, shipped_d...原创 2018-06-06 20:58:57 · 310 阅读 · 0 评论 -
HQL的概念和API
HQL的概念和APIHQL(Hibernate Query Language)是面向对象的查询语言,它和SQL语言有些相似。在Hibernate提供的各种检索方式中,Hibernate是使用最广的一种检索方式。HQL的功能在查询语句中设定各种查询条件支持投影查询,即仅检索出对象的部分属性支持分页查询支持连接查询支持分组查询,提供内置聚集函数能够调用用户定义的SQL函数...原创 2018-06-12 12:44:42 · 742 阅读 · 0 评论 -
乐观锁
乐观锁概念乐观锁假定当前事务操纵数据资源时,不会有其他事务同时访问该数据资源,能保证多个事务并发访问数据,又能防止第二类丢失更新问题。HIbernate实现在应用程序中,可以利用Hibernate提供的版本控制功能来实现乐观锁。对象-关系映射文件中的<version>元素和<timestamp>元素都具有版本控制功能:<version&g...原创 2018-06-12 12:43:52 · 1377 阅读 · 0 评论 -
06. 继承关系映射
继承关系映射继承关系映射分为三种:整个继承结构映射一张表每个类映射一张表有多少个类就映射多少张表,包括子类父类每个具体子类映射一张表只需要每个子类映射一张表,而父类不映射到表用到的例子在研究继承关系映射时,我们用到了一个继承关系的例子。父类:BillingDetails(账单明细)id:Longowner:String(拥有者)code:Strin...原创 2018-06-11 21:02:37 · 247 阅读 · 0 评论 -
07. 组件映射
组件映射组件映射的引出假设我们有一个Person实体类,该实体类有id,name,地址信息(province,city,street)等;而其他的一些类中也会有地址信息,比如Student实体类、Customer实体类,这时我们可以把地址信息单独抽象出来封装到一个Address类中,在把Address对象作为其他实体类的属性,以实现代码重用。但是,我们把实体类映射到表中时,需不需要单独...原创 2018-06-11 21:03:01 · 240 阅读 · 0 评论 -
08. 集合映射-set
集合映射-set介绍实际上,set这种集合映射我们在前面已经学习关联关系映射时已经用过了,实体类(实体类都在在数据库中有对应的表)中有一对多或者多对多的关系,并且我们可以通过某一侧访问到另一侧,就是通过在类中设置 set集合并配置set映射来实现的。在Hibernate配置中有两种数据类型,一种是值类型,另一种是实体类型,实体类型都有映射文件,而值类型则没有,我们前面使用的就是实体...原创 2018-06-11 21:03:57 · 173 阅读 · 0 评论 -
09. 集合映射-list
集合映射-list我们在学集合类时知道,list集合内部存储的数据是有序的,如ArrayList是线性数组,而LinkList是线性链表。list映射值类型表结构用户表items_set,用户表中存储用户的id与姓名CREATE TABLE items_set( id NUMBER(10) PRIMARY KEY, name VARCHAR2(20)...原创 2018-06-11 21:04:17 · 341 阅读 · 0 评论 -
10. 集合映射-bag
集合映射-bagBag,实际上就是List的另一个版本,我们使用List存储元素时,元素以先后添加顺序存储在集合中,映射到数据库中时,也会保持先后顺序,当我们从数据库中取出数据时,数据依然有序,如果我们并不想维持元素之间的先后顺序关系,那我们可以使用没有顺序的List——Bag。Bag表结构items_bag表(父表)CREATE TABLE items_bag(...原创 2018-06-11 21:09:04 · 234 阅读 · 0 评论 -
11. 集合映射-Map
集合映射-Map键值对映射模型Map表结构items_map(父表)CREATE TABLE items_map( id NUMBER(10) PRIMARY KEY, name VARCHAR2(20));images_map(子表)不设置主键,使用两个栏位作为联合主键CREATE TABLE images_map( im...原创 2018-06-11 21:09:23 · 261 阅读 · 0 评论 -
Session的缓存与对象
Session的缓存Java对象的生命周期如果希望一个Java对象一直处于生命周期中,就必须保证至少有一个变量引用它,或者在一个Java集合中存放了这个对象的引用。Session的缓存Session对象中维护的缓存即称为Hibernate的一级缓存(first cache)在Session接口的实现类中定义了一系列的Java集合,这些Java集合构成了Session的缓...原创 2018-06-12 12:24:38 · 423 阅读 · 0 评论 -
01. Hibernate一级缓存
Hibernate缓存Hibernate一级缓存Hibernate一级缓存默认就是存在的,一级缓存就是Session对象维护的一个Map键值对集合。Session缓存的作用减少访问数据库的频率应用程序从内存中读取持久化对象的速度显然要比到数据库中查询数据的速度快多了,因此session的缓存可以提高数据访问的性能。验证......trans=session....原创 2018-06-12 12:26:02 · 116 阅读 · 0 评论 -
02. Hibernate的二级缓存
Hibernate的二级缓存我使用的Hibernate版本:5.2.0 finalHibernate二级缓存的概念需要配置才能使用,该缓存用来存放被程序读过的数据,将来其他程序可能会重用这些数据,因此这个二级缓存中的数据能被所有的程序共享。一级缓存,如果我们发起一个请求,那么将创建一个线程,该线程绑定一个Session对象,此Session对象对应一个事务,并维护一个一级缓存,...原创 2018-06-12 12:29:49 · 126 阅读 · 0 评论 -
01. Session 常用方法:save、update、saveOrUpdate
Session 常用方法:save、update、saveOrUpdatesave方法该方法传入的参数是临时对象 //启动事务1trans=session.beginTransaction();/*临时对象*/Student student=new Student();student.setId("2017");student.setName("Vin");stud...原创 2018-06-12 12:30:18 · 3921 阅读 · 0 评论 -
02. Session常用方法:delete、load、get
Session常用方法:delete、load、getdelete方法该方法用于从数据库中删除与Java对象对应的记录如果传入的参数是持久化对象,Session就执行一个delete语句如果传入的参数是游离对象,那么先使游离对象被Session关联,使它变为持久化对象,然后再执行一个delete语句//启动事务1trans=session.beginTransaction(...原创 2018-06-12 12:37:48 · 357 阅读 · 0 评论 -
Hibernate的检索、级联操作以及批处理
Hibernate的检索、级联操作以及批处理HIbernate的检索方式立即检索:查询返回的对象中包含所有的属性(将所有的属性都加载)延迟检索(延迟加载):查询返回的对象仅仅包含OID(Object Identifier:对象标识符),其他属性为空,只有在调用该对象的setter或者getter方法时,Hibernate才会根据OID从数据库中查询并加载其他属性。实际上Hib...原创 2018-06-12 12:39:03 · 170 阅读 · 0 评论 -
事务的特征以及Hibernate事务
事务的特征以及Hibernate事务事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸多操作要么都做,要么都不做。一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation):一个事务的...原创 2018-06-12 12:39:38 · 808 阅读 · 0 评论 -
悲观锁
悲观锁概念悲观锁(Pessimistic Lock),指在应用程序中显示地为数据资源加锁。悲观锁,顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。悲观锁假定当前事务操纵数据资源时,肯定还有其他事务同时访问该数据资源,为了避免当前事务的操作受到干扰,先锁定资源。尽管悲观锁能够防止丢失更新和不可重...原创 2018-06-12 12:43:27 · 7128 阅读 · 0 评论 -
05. 关联关系映射(多对多)
关联关系映射多对多关联关系映射(Engineer和Technology)这里我们学习Hibernate中多对多的关联关系映射,我们使用的例子是Engineer(工程师)和Technology(技术),一个Engineer可以掌握多门技术,一门Technology也可以被多个工程师掌握。多对多双向关联关系的表结构Engineer表CREATE TABLE t_engi...原创 2018-06-07 10:03:30 · 283 阅读 · 0 评论