如果在Hibernate项目里面配了很多many-to-one的关联,即使后台在查询数据时已经作了健全性判断,但还是会经常抛出对象找不到异常:org.hibernate.ObjectNotFoundException: No row with the given identifier exists. 比如系统在用户的使用过程中,数据库表的数据会常发生变化,最常见的是人员变化,原先引用的User在数据库表没了,而Hibernate做了多对一关联,多的这端引用的一的那端,一旦引用值在一的那端找不到数…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述命名查询,所谓命名查询是什么呢? Hibernate中允许我们在xml,实体类,甚至注解的方式来编写查询语句,本篇博客将讲述xml中的方式 一,准备好准备工作,我由于上篇博客把大量的准备都做好,所以,本篇从简 二,预览hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hi…
hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hibernate中就可以称之为持久化类 Java实体类 该Java类的映射文件 持久化类的使用 提供无参构造 从之前测试类中查询的使用来看: User user = session.get(User.class, 1); 说明hibernate内部是使用反射技术实现生成对象实例,所以持久化类中的Java…
Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下…
Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声明,在Hibernate配置文件中加入如下代码. 一个JTA 可以跨越多个数据库.…
锁机制:是数据库为了保证数据的一致性<一个事务的各种操作不相互影响>而使各种共享资源在被并发访问访问变得有序所设计的一种规则,用来保证在当前用户进行操作数据的时候其他的用户不能对同一数据进行任何操作. Hibernate是一个持久层框架,他的操作就是用来存取数据库中的数据,为了保证数据的一致性,hibernate提供了自己的锁机制. Hibernate的锁机制: 乐观锁:<pessimistic locking>他认为一般不会出现多个用户同时操作同一条数据的情况,因此不做资料库层次…
Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个对象对应的数据为持久状态这个时候有OID. 游离状态:当Session关闭,缓存中不存在这个对象数据而数据库中有这个对象的数据并且有OID为游离状态. 注:OID为了在系统中能够找到所需对象,我们需要为每一个对象分配一个…
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hibernate中的一个关键概念,正确地理解生命周期,可以更好地了解Hibernate的实现原理,掌握Hibernate的正确用法. Hibernate框架通过Session来管理Java对象的状态,在持久化生命周期中,Java对象存在着如下三种状态: 瞬时状态(Transient) 通过new创建对…
JPA执行原生SQL截断Char类型问题 在JPA的API中执行原生SQL:EntityManager.createNativeQuery(String sqlString); 传入参数是原生SQL语句,返回SQL对象. 如果oracle数据库中某个字段定义的是char类型,比方说是char[2],当使用EntityManager.createNativeQuery(String sql); 去查询这些值的时候,发现返回的结果集中只要数据库中是char类型的,都只返回一个字符. 原因:hiber…
package cn.db.po.test; import java.util.List; import cn.db.po.User; import cn.db.po.biz.UserBiz; public class TestFirstHib { public static void main(String[] args) { //创建一个新用户 //User user=new User(); //user.setId(1001); /* * 删除的时候只要给后台传ID便可 * user.se…