hibernate
文章平均质量分 74
mischen520
JAVA高级架构师
展开
-
Mybatis和Hibernate的区别
Hibernate 对数据库结构提供了较为完整的封装,Hibernate 的 O/R Mapping 实现了 POJO。Hibernate HQL 语句的调优需要将 SQL 打印出来,而 Hibernate 的 SQL 被很多人嫌弃因。对 SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调。换句话说,使用 Hibernate 的开发者应该总是关注对象的状态(state),不必考虑 SQL。和数据库表之间的映射,以及 SQL 的自动生成和执行。原创 2023-11-12 18:53:54 · 117 阅读 · 0 评论 -
hibernate中一对一映射配置详细解析(二)
本例模仿的是用户与身份证信息,即一个用户对应一个身份证信息,且用户的身份证信息不能重复,采取基于主键的映射配置策略,下面是具体实现代码:1.hibernate.cfg.xml<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www原创 2016-08-11 16:48:20 · 439 阅读 · 0 评论 -
hibernate中组件映射配置详细解析
组合关系 一个类中包含了另外一个类。这2个类中就是组合关系。 需求: 汽车与车轮 组件映射 类组合关系的映射,也叫做组件映射! 注意:组件类和被包含的组件类,共同映射到一张表! 需求:汽车与车轮 本例模仿汽车与车轮之间的组合关系来实现组原创 2016-08-11 19:38:28 · 586 阅读 · 0 评论 -
hibernate中继承映射配置详细解析(三)
本例模仿的是每个类映射一张表的信息,例如动物,猴子,猫,所以一共有三张表,下面是修改映射配置文件信息,其他文件如需参考,请参考我的上篇文章《hibernate中继承映射配置详细解析(二)》Animal.hbm.xml<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "htt原创 2016-08-11 21:46:03 · 356 阅读 · 0 评论 -
hibernate中继承映射配置详细解析(二)
本例模仿的是所有子类映射到一张表 (1张表) 什么情况用? 子类教多,且子类较为简单,即只有个别属性! 好处:因为使用一个映射文件, 减少了映射文件的个数。 缺点:(不符合数据库设计原则) 一个映射文件: Animal.hbm.xml1.hibernate.原创 2016-08-11 21:12:04 · 412 阅读 · 0 评论 -
hibernate中继承映射配置详细解析(一)
本例模仿猫和动物的关系,实现用猫继承动物,属于简单继承。 简单继承的特点:有多少个子类,就有多少个映射文件! 下面是实现代码1.hibernate.cfg.xml<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://w原创 2016-08-11 20:33:05 · 1015 阅读 · 0 评论 -
hibernate中继承映射配置详细解析(四)
本例模仿的是每个子类映射一张表, 父类不对应表(2张表),以动物,猴子,猫为例,只须将Animal.hbm.xml和Animal类文件简单修改即可,其他参考文件请参照我的上篇文章《hibernate中继承映射配置详细解析(三)》,下面是需要改动的文件1.Animal.hbm.xml<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hib原创 2016-08-11 22:24:02 · 318 阅读 · 0 评论 -
hibernate中HQL查询详细解析(珍藏版)
本例模仿部门与员工之间来进行HQL的各种查询,一共有两张表,一张部门表,一张员工表,下面是具体查询代码:1.Junit测试package cn.itcast.a_query;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;im原创 2016-08-12 13:03:18 · 2538 阅读 · 0 评论 -
hibernate对分页查询的支持
本例模仿部门与员工进行查询,下面是进行Junit测试的核心代码package cn.itcast.a_query;import org.hibernate.Criteria;import org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.ScrollableResults;import or原创 2016-08-12 19:19:38 · 968 阅读 · 0 评论 -
hibernate中对c3p0连接池的配置
连接池, 作用: 管理连接;提升连接的利用效率! 常用的连接池: C3P0连接池 Hibernate自带的也有一个连接池,且对C3P0连接池也有支持! Hbm 自带连接池: 只维护一个连接,比较简陋。 可以查看hibernate.properties文件查看连接池详细配置: ##########原创 2016-08-12 20:55:44 · 3837 阅读 · 0 评论 -
hibernate中二级缓存配置详细解析
Hibernate提供的缓存 有一级缓存、二级缓存。 目的是为了减少对数据库的访问次数,提升程序执行效率! 一级缓存: 基于Session的缓存,缓存内容只在当前session有效,session关闭,缓存内容失效! 特点: 作用范围较小! 缓存的事件短。原创 2016-08-12 22:22:17 · 8622 阅读 · 1 评论 -
struts+hibernate综合开发案例
本例模仿的是部门与员工的关系,即一对多,本例只是一个简单案例,旨在让struts和hibernate实现基本的整合,了解两大框架的基本应用,下面是关键代码配置详细信息1.hibernate.cfg.xml<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"原创 2016-08-13 12:26:03 · 543 阅读 · 0 评论 -
JPA是什么?他和Hibernate什么关系?
JPA全称Java Persistence API. JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。Sun引入新的JPA ORM规范出于两个原因:其一,简化现有JavaEE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合对ORM技术,实现天下归一。JPA的总体思想和现有Hibernate、TopLink,JDO等ORM原创 2016-08-13 16:26:56 · 584 阅读 · 0 评论 -
SessionFactory (org.hibernate.SessionFactory)
针对单个数据库映射关系经过编译后的内存镜像,是线程安全的(不可变)。 作为 Session的工厂和 ConnectionProvider 的客户。SessionFactory 可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存。 SessionFactory使用要点如下:1. 负责创建Session对象,可以通过Configuration对象创建原创 2016-08-13 16:30:43 · 981 阅读 · 0 评论 -
如何理解Hibernate的延迟加载机制?在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?
延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。Hibernate使用了虚拟代理机制实现延迟加载,我们使用Session的load()方法加载数据或者一对多关联映射在使用延迟加载的情况下从一的一方加载多的一方,得到的都是虚拟代理,简单的说返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法时才会去数据库加载数据。但加载数据就需要数据库连接。而当我...转载 2019-06-15 07:21:19 · 139 阅读 · 0 评论 -
hibernate中一对一映射配置详细解析(一)
本例模仿用户与身份证相对应的关系,即一个用户对应一个身份证信息,且身份证信息不能重复,下面代码是实现基于外键的一对一映射1.hibernate.cfg.xml<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd原创 2016-08-11 16:41:23 · 7719 阅读 · 0 评论 -
hibernate中懒加载的详细解析
面试题3: get、load方法区别?get: 及时加载,只要调用get方法立刻向数据库查询load:默认使用懒加载,当用到数据的时候才向数据库查询。 懒加载:(lazy) 概念:当用到数据的时候才向数据库查询,这就是hibernate的懒加载特性。 目的:提供程序执行效率! lazy 值 true原创 2016-08-11 12:00:02 · 648 阅读 · 0 评论 -
session的get()和load()有什么区别?
get()如果没有找到持久化类返回null,有可能导致空指针异常。 load()如果没有找到持久化类直接抛出异常。 get()是直接加载数据,load()是延迟加载,当使用被加载数据的时候才发送SQL。 简而言之:Hibernate对于load()认为数据库一定存在,因此可以放心的使用代理进行延迟加载,如果使用中发现了问题,那么只能抛出异常。而对原创 2016-08-08 09:51:25 · 336 阅读 · 0 评论 -
Query对象在获取表的所有的数据的时候,使用list()和 iterator()有什么区别?
1.编写代码的方式不同list()和iterator() 2.底层发送的SQL语句不同 list()直接一次性获取到所有持久化类的对象 iterator()先获取的是所有的数据的id值。当真正的遍历使用数据的时候再发送select语句。因此该方法一定要处于session会话中。 list发送的查询语句只有1条。Iterator发送原创 2016-08-08 09:59:13 · 429 阅读 · 0 评论 -
Hibernate3中持久化对象的状态
l瞬时对象(Transient Objects) 使用new操作符初始化的对象不是立刻就持久化的,他们的状态是瞬时的。 (1) 不处于Session的缓存中,也可以说,不被任何一个Session实例关联。 (2) 在数据库中没有对应的记录。l持久化对象(PersistObjects) 持久实例是任何具有数据库标识的实例。它有原创 2016-08-08 10:11:12 · 269 阅读 · 0 评论 -
Hibernate对数据库增删查改的封装
1.创建session的封装package cn.itcast.utils;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtils { private static Sess原创 2016-08-08 19:16:34 · 3145 阅读 · 0 评论 -
Hibernate.cfg.xml 主配置
Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息、其他参数、映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties 数据库连接参数配置例如:## MySQL #hibernate.dialec原创 2016-08-08 20:05:58 · 280 阅读 · 0 评论 -
hibernate中的映射配置详解
1. 普通字段类型2. 主键映射 单列主键映射 多列作为主键映射 主键生成策略,查看api: 5.1.2.2.1. Variousadditional generators 数据库: 一个表能否有多个主键? 不能。 为什么要设置主键? 数据库存储的数据都是有效的,必须保持原创 2016-08-09 15:19:38 · 952 阅读 · 0 评论 -
hibernate中的集合映射详细解析
1.hibernate.cfg.xml配置<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> com.m原创 2016-08-09 20:40:11 · 448 阅读 · 0 评论 -
hibernate中的一对多与多对一的详细配置解析
1.Employeepackage cn.itcast.b_one2Many;public class Employee { private int empId; private String empName; private double salary; //员工与部门(多对一) private Dept dept; public int getEmpId() { r原创 2016-08-10 09:04:14 · 12222 阅读 · 1 评论 -
hibernate中inverse属性用法解析
Inverse属性Inverse属性,是在维护关联关系的时候起作用的。 表示控制权是否转移。(在一的一方起作用) Inverse , 控制反转。Inverse = false 不反转; 当前方有控制权 True 控制反转; 当前方没有控制权 维护关联关系中,是否设置inverse属性: 1.保原创 2016-08-10 19:38:53 · 5495 阅读 · 0 评论 -
hibernate中多对多映射配置详细解析
本工程以项目与开发人员构成多对多的关系来展开,构建多对多的关系,具体实现代码如下所示:1.hibernate.cfg.xml文件<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/原创 2016-08-10 22:15:58 · 4973 阅读 · 0 评论 -
hibernate中设置inverse属性对多对多关联关系的影响
设置inverse属性,在多对多种维护关联关系的影响?1) 保存数据有影响。 inverse=false ,有控制权,可以维护关联关系;保存数据的时候会把对象关系插入中间表; inverse=true, 没有控制权,不会往中间表插入数据。2) 获取数据 无。 3) 解除关系 // 有影响原创 2016-08-10 22:51:02 · 2309 阅读 · 1 评论 -
hibernate中对象的状态解析
举例: User user = new User(); Hibernate中对象的状态: 临时/瞬时状态、持久化状态、游离状态。ü 临时状态 特点: 直接new出来的对象; 不处于session的管理; 数据库中没有对象的记录;ü 持久化状态原创 2016-08-11 08:13:39 · 244 阅读 · 0 评论 -
JPA是什么?他和Hibernate什么关系?
JPA全称Java Persistence API. JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。Sun引入新的JPA ORM规范出于两个原因:其一,简化现有JavaEE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合对ORM技术,实现天下归一。JPA的总体思想和现有Hibernate、TopLink,JDO等ORM原创 2016-08-23 11:44:32 · 269 阅读 · 0 评论 -
hibernate中的一级缓存及常见面试题解析
为什么要用缓存? 目的:减少对数据库的访问次数!从而提升hibernate的执行效率!Hibernate中缓存分类: 一级缓存 二级缓存 概念1)Hibenate中一级缓存,也叫做session的缓存,它可以在session范围内减少数据库的访问次数! 只在session范围有效! Session关闭,一级缓存失效!原创 2016-08-11 11:10:28 · 1854 阅读 · 0 评论 -
hibernate主键生成策略总结
主键生成策略: 针对Oracle: assigned(自己指定主键), sequence(在数据库中用序列来维护),如果在使用的时候 没有显示指定sequence的名称的时候 所有的表共用一个序列,如果自己显示指定的名称,则hibernate会使用我们给定的序列 (如果数据库中有对应的序列则直原创 2016-08-17 09:51:00 · 427 阅读 · 0 评论