Hibernate
y41992910
紧跟时代潮流,努力进步,走在前列
展开
-
2_Hibernate_HelloWorld 代码实现部分
准备工作: 1.导入hibernate需要的jar包:改目录下的 hibernate-release-4.2.4.Final\lib\required 2.导入数据库驱动包Hibernate开发步骤 1. 创建 Hibernate 配置文件() 2. 创建持久化类(pojo) 3. 创建对象-关系映射文件 4. 通过 Hibernate API 编写访问数据库的代码hibernate.原创 2017-04-11 16:31:02 · 214 阅读 · 0 评论 -
1. Hibernate_概述&安装 Hibernatetools 插件&DTD约束
什么是 Hibernate ? 一个框架 一个 Java 领域的持久化框架 一个 ORM 框架对象的持久化 狭义的理解,“持久化”仅仅指把对象永久保存到数据库中 广义的理解,“持久化”包括和数据库相关的各种操作: 保存:把对象永久保存到数据库中。 更新:更新数据库中对象(记录)的状态。 删除:从数据库中删除一个对象。 查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库原创 2017-04-11 14:16:10 · 1514 阅读 · 0 评论 -
关于在测试类中,懒加载问题导致加载了主类之后,在测试类中引用集合类出现错误的问题
关于在测试类中,懒加载问题导致加载了主类之后,在测试类中引用集合类出现错误的问题: 主要原因是因为:hibernate的事物是给了spring管理,而测试类中写的代码,是不归spring管理的,把代码转移到service中去执行进行在测试类:EmployeeServiceTest中直接运行 @Test public void testEmployeeInDept(){原创 2017-12-11 14:10:45 · 666 阅读 · 0 评论 -
object references an unsaved transient instance - save the transient instance before flushing: com.i
最近做SSH整合,在新建管理员的时候,出现如下错误:Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: AdminRoleorg.springframework.原创 2017-12-13 13:17:19 · 226 阅读 · 0 评论 -
hibernate新增一条带有外键的数据记录的时候,一定要先将外键对应的对象持久化
hibernate新增一条带有外键的数据记录的时候,一定要先将外键对应的对象持久化,然后set到带外键的对象中。假如A对象的外键是B对象的主键 那么B对象必须存在 这个不是hibernate的问题,是数据库的问题也就是相当于hibernate在你插入的对象的外键不是Null的时候,先检查了一遍数据库中确实存在这个记录(通过外键的id,去主表中查出对应的记录,然后再set到对应的属性中,这样它就是原创 2017-12-13 16:03:19 · 2738 阅读 · 0 评论 -
Could not obtain transaction-synchronized Session for current thread
当前类不处于事物管理的范围之内,在类上面加入注解 @Transactional(readOnly = false, rollbackFor = Exception.class) 即可解决: org.springframework.transaction.annotation.Transactional但是每个类都要加,好累的感觉原创 2017-12-13 16:52:47 · 141 阅读 · 0 评论 -
Hibernate懒加载问题导致View层无法获取关联数据的问题
在controller中查询出了一个数据,数据关联了另外一个对象,在页面中用A.GETB().GETXXX()的方式的时候就会报错,因为是懒加载,默认的session已经关闭了。解决问题的方式有以下几种 1.最常用的方式,如果是SSH框架的话,可以这么用。在配置文件中加入以下内容 <!-- 使用spring解决懒加载问题 但是这种方法也是有缺点的,缺点就是延长了session关闭的时原创 2017-12-14 14:24:18 · 1119 阅读 · 0 评论 -
org.hibernate.type.IntegerType.next NullPointerException
最近使用hibernate的SSH整合的时候,出现了上面的错误,但是发现 错误是报在: List set = roleAndResourcesService.getRoleAndResourcesByAdminRoleId(entity.getId()); 说是出现了空指针,但是在单元测试类中传入一样的参数,单单调用这个方法就不会报错,当时脑子乱了,没有往上面去想,最后想来想去,不断的移除,才原创 2017-12-15 13:15:47 · 1575 阅读 · 0 评论 -
hibernate 实体状态转移
最新的Hibernate文档中为Hibernate对象定义了四种状态(原来是三种状态,面试的时候基本上问的也是三种状态),分别是:瞬时态(new, or transient)、持久态(managed, or persistent)、游离态(detached)和移除态(removed,以前Hibernate文档中定义的三种状态中没有移除态),如下图所示,就以前的Hibernate文档中移除态被视为是瞬转载 2017-12-15 13:21:59 · 205 阅读 · 0 评论 -
hibernate中,假如拼接多个条件查询,并且条件中有时间的时候,如何处理
最终解决方案:条件查询中,有时间的时候,要用java.sql.Date,不能用util.Date;条件: mysql数据库,时间类型为:datetimecirculationOfBill.addFilter(Criteria.and(Operation.lte(“endTime”, new java.sql.Date(System.currentTimeMillis()))));Hibernate原创 2018-01-30 14:16:43 · 1608 阅读 · 0 评论 -
17. Hibernate_映射继承关系
对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念。Hibernate 的继承映射可以理解持久化类之间的继承关系。例如:人和学生之间的关系。学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到。Hibernate支持三种继承映射策略(如果实在要用,一ban用union): 使用 subclass 进行映射:将域模型中的每一个实体对象映射到一个独立的表中,也就是原创 2017-04-17 13:54:59 · 259 阅读 · 0 评论 -
16. Hibernate_映射多对多关联关系
1.具体看是单向n-n还是双向n-n,如果是单向n-n的话,类似之前的.就是变成了many-to-many单向的也是只需要一边配置set属性即可.双向的话则需要指定由那一边维护关联关系单向 n-n n-n 的关联必须使用连接表 与 1-n 映射类似,必须为 set 集合元素添加 key 子元素,指定 CATEGORIES_ITEMS 表中参照 CATEGORIES 表的外键为 CATEGOR原创 2017-04-17 11:04:02 · 258 阅读 · 0 评论 -
15. Hibernate_基于主键映射的1-1关联关系
1.在一段使用自己的主键作为外键,去关联另外一个表的主键.这样就一一对应关系就建立起来了.(其实也是前面那种方法的翻版,有个唯一性的外键在关联着另外一个表的主键).基于主键的映射策略:指一端的主键生成器使用 foreign 策略,表明根据”对方”的主键来生成自己的主键,自己并不能独立生成主键. 子元素指定使用当前持久化类的哪个属性作为 “对方”采用foreign主键生成器策略的一端增加 one-t原创 2017-04-14 17:17:02 · 287 阅读 · 0 评论 -
3. Hibernate_HelloWorld 详解
使用 Hibernate 进行数据持久化操作,通常有如下步骤: 编写持久化类: POJO + 映射文件 获取 Configuration 对象 获取 SessionFactory 对象 获取 Session,打开事务 用面向对象的方式操作数据库 关闭事务,关闭 SessionConfiguration 类负责管理 Hibernate 的配置信息。包括如下内容: Hibernate 运行翻译 2017-04-11 16:38:35 · 226 阅读 · 0 评论 -
4-7. Hibernate_Session 概述&缓存(Hibernate 一级缓存)&Session 核心方法
核心方法:package com.hgh.hibernate.helloworld;import static org.junit.Assert.*;import java.sql.Connection;import java.sql.SQLException;import java.util.Date;import org.hibernate.Session;import org.hiber原创 2017-04-12 14:27:07 · 240 阅读 · 0 评论 -
8. Hibernate_配置文件详解hibernate.cfg.xml
Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性 每个 Hibernate 配置文件对应一个 Configuration 对象 Hibernate配置文件可以有两种格式,推荐使用xml的方式: hibernate.properties hibernate.cfg.xml hibernate.cfg.xml的常用属性 JDBC 连接属性 con原创 2017-04-12 15:14:32 · 256 阅读 · 0 评论 -
9. Hibernate_详解 Hibernate 映射文件1
POJO 类和关系数据库之间的映射可以用一个XML文档来定义。 通过 POJO 类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对应关系 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句 映射文件的扩展名为 .hbm.xmlhibernate-mapping 类层次:class 主键:id 基本原创 2017-04-12 17:05:33 · 284 阅读 · 0 评论 -
18. Hibernate_检索策略(lazy、fetch、batch-size等)
类级别的检索策略无论 元素的 lazy 属性是 true 还是 false, Session 的 get() 方法及 Query 的 list() 方法在类级别总是使用立即检索策略 若 元素的 lazy 属性为 true 或取默认值, Session 的 load() 方法不会执行查询数据表的 SELECT 语句, 仅返回代理类对象的实例, 该代理类实例有如下特征: 由 Hibernate原创 2017-04-17 17:26:23 · 1393 阅读 · 0 评论 -
11. Hibernate_单向多对一映射
要点: 1.也就是有个主表,然后另外一个表引用主表中的某个字段作为外键2.在副对象中,引用主表对象.然后在mapping文件中,映射多对一关系,并制定各自的属性名,类名,外键名 <!-- 映射多对一的关联关系。 使用 many-to-one 来映射多对一的关联关系 name: 多这一端:关联的一那一端的属性的名字原创 2017-04-13 15:38:43 · 297 阅读 · 0 评论 -
10. Hibernate_详解 Hibernate 映射文件(2)
精确映射:<!-- 映射大数据,若希望精确映射sql类型,则使用sql-type来指定字段类型:比如想要mediumtext,但是映射成为 了text --> <property name="image"> <column name="IMAGE" sql-type="mediumblob"></column> </property>映射组成关原创 2017-04-13 15:44:29 · 224 阅读 · 0 评论 -
12-13.Hibernate_双向一对多映射
1.在1的端,有一个set的属性,在mapping文件中,用set来映射1到多的一端的关系.一般1的一端不要维护关联关系,设置inverse为true,放弃维护. /* * 1. 声明集合类型时, 需使用接口类型, 因为 hibernate 在获取 * 集合类型时, 返回的是 Hibernate 内置的集合类型, 而不是 JavaSE 一个标准的 * 集合实现.原创 2017-04-14 14:56:42 · 271 阅读 · 0 评论 -
14. Hibernate_基于外键映射的1-1关联关系
1.有一张表是有外键的(指向另外一张表的主键),而且外键是唯一性的约束.另外一张表是没有外键的,只是他会有个one-to-one来关联有外键的那个表的外键字段.这样就可以通过本端主键和另外一端的外键相等来查找本端.//3. 查询 Manager 对象的连接条件应该是 dept.manager_id = mgr.manager_id //而不应该是on manager0_.MA_ID=原创 2017-04-14 16:38:08 · 251 阅读 · 0 评论 -
On release of batch it still contained JDBC statements
最近用hiernate执行saveOrUpdate的时候,报错了。错误信息如下2018-11-12 13:55:32,265 [WARN ] [http-bio-8080-exec-9] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1062, SQLState: 230002018-11-12 13:55:32,2...原创 2018-11-12 14:46:09 · 10940 阅读 · 0 评论