代码改变世界

随笔分类 -  数据库框架-hibernate

Hibernate 事务处理和spring中配置事务

2012-12-25 00:16 by eoeAndroid社区, 352 阅读, 收藏,
摘要: 1.非集成spring事务管理事务是指由一个或者多个SQL语句组成的工作单元,这个单元中SQL语句只要有一个SQL语句执行失败,就会撤销整个工作单元。事务的成功取决于工作单元的所有SQL语句都执行成功,它必须具备ACID特征,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和持久性(Durability),它们的含义是:(1)原子性:事务是不可分割的工作单元,事务中所有操作执行成功事务才算成功(2)一致性:事务不能破坏数据的完整性和一致性(正确性)(3)隔离性:在并发环境中,事务是独立的,它不依赖其他事务也能完成任务(4)持久性:只要事务成功执行 阅读全文

hibernate 延迟加载的错误 failed to lazily initialize

2012-12-25 00:16 by eoeAndroid社区, 220 阅读, 收藏,
摘要: 这个问题一般出现在一对多的情况下,解决的方法有两种1、设置lazy=false如果是用annotation,则配置如下Xml代码@OneToMany(targetEntity=CourseAuthorizationItem.class,cascade={CascadeType.PERSIST,CascadeType.MERGE},mappedBy="course",fetch=FetchType.EAGER)将fetch类型设置成直接获取2、就是使用filter,过滤所有的链接如果在使用filter的时候,要配置事务处理,否则会导致session处于只读状态而不能做修改、删 阅读全文

hibernate 乐观锁与悲观锁使用

2012-12-25 00:16 by eoeAndroid社区, 201 阅读, 收藏,
摘要: 总结一句话概述 当多个事务同时使用相同数据时会导致并发问题,此时只能用锁来限制。 悲观锁:直接锁住数据库,一个用完,下个才能用,开销大。 乐观锁:数据库中增大version字段,每次提交时,对比当前version和数据库的version是否一致来判断。引用其他文章详细讲解:Hibernate支持两种锁机制:即通常所说的“悲观锁(Pessimistic Locking)”和 “乐观锁(OptimisticLocking)”。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。Hib 阅读全文

hibernate的1级缓存和2级缓存

2012-12-25 00:15 by eoeAndroid社区, 149 阅读, 收藏,
摘要: 一级缓存就是Session级别的缓存,close后就没了。 二级缓存就是SessionFactory级别的缓存,全局缓存,要配置其他插件。 什么样的数据适合存放到第二级缓存中? 1、很少被修改的数据 2、不是很重要的数据,允许出现偶尔并发的数据 3、不会被并发访问的数据 4、参考数据 不适合存放到第二级缓存的数据? 1、经常被修改的数据 2、财务数据,绝对不允许出现并发 3、与其他应用共享的数据。 Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的S... 阅读全文

hibernate执行sql获取泛型对象

2012-12-25 00:15 by eoeAndroid社区, 218 阅读, 收藏,
摘要: 看下面的SQL查询示例:private void test(){ //获取Hibernate Session对象 Session session = HibernateUtil.currentSession(); //开始事务 Transaction tx = session.beginTransaction(); //编写SQL语句 String sqlString = "select {s.*} from student s where s.name like '马军'"; //以SQL语句创建SQLQuery对象 List l = session.cr 阅读全文

集成Spring后HibernateTemplate实现分页

2012-12-25 00:15 by eoeAndroid社区, 767 阅读, 收藏,
摘要: Spring 整合 Hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下...使用spring的hibernateTemplate的回调机制扩展hibernateTemplate的功能实现分页[java]view plaincopy/***使用hql语句进行操作*@paramhql*@paramoffset*@paramlength*@returnList*/publicListgetListForPage(finalStringhql,finalintoffset,finalintlength){Listlist=getH 阅读全文

Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

2012-12-25 00:14 by eoeAndroid社区, 361 阅读, 收藏,
摘要: 1.非集成SpringHibernate的检索方式,主要有以下五种。1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)2.OID检索方式。(按照对象的OID来检索对象。)3.HQL检索方式。(使用面向对象的HQL查询语言。)4.QBC检索方式。(使用QBC(Qurey By Criteria) API来检索对象。)5.本地SQL检索方式。(使用本地数据库的SQL查询语句。)1、导航对象图检索方式利用类与类之间的关系来检索对象。譬如我们要查找一份订单,就可以由订单对象自动导航找到订单所属的客户对象。当然,前提是必须在对象-关系映射文件上配置了它们的多对一的关系。Orderorder 阅读全文

Hibernate 映射xml中的属性类型

2012-12-25 00:14 by eoeAndroid社区, 354 阅读, 收藏,
摘要: Hibernate的内置映射类型1JAVA基本类型(包括它们的包装类)和Hibernate映射类型HibernateJava类型标准SQL类型大小和取值范围integer/intint/java.lang.Integerinteger4字节,-2^31~2^31-1longlong/java.lang.Longbigint8字节, -2^63~2^63-1shortshort/java.lang.Shortsmallint2字节, -2^15~2^15-1bytebyte/java.lang.Bytetinyint1字节, -128~127flatfloat/java.lang.Floatfl 阅读全文

浅谈hibernate(cascade,lazy,inverse,fetch)

2012-12-25 00:13 by eoeAndroid社区, 211 阅读, 收藏,
摘要: 1.cascade是否执行级联操作 <set name="children" lazy="true" cascade="all"> 在保存主表的时候,如果没有保存从表信息,会抛出异常,如果设置了级联关系,可以自动先保存从表,在保存主表all: 所有情况下均进行关联操作,即save-update和delete。 none: 所有情况下均不进行关联操作。这是默认值。 save-update: 在执行save/update/saveOrUpdate时进行关联操作。2.inverse指定哪一方不控制关联关系,一般在set上(1端不 阅读全文

hibernate的映射关系(1对n,n对1,n对n······)

2012-12-25 00:13 by eoeAndroid社区, 254 阅读, 收藏,
摘要: 1对多(1对多关系,name="novelSet"对应字段名 inverse=“true”不维护关联关系,order-by排序字段)<hibernate-mapping package="com.model"> <class name="NovelType" table="noveltype" catalog="sshweb"> <id name="id" type="java.lang.Integer"> <co 阅读全文

hibernate简介(Session,几种状态,方法······等)

2012-12-25 00:12 by eoeAndroid社区, 347 阅读, 收藏,
摘要: Hibernate是什么? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 对象关系映射简称ORM(Object Relational Mapping),由于我们目前使用的编程语言大都是面向对象的编程,使用的数据库也大多都是关系型数据库,数据得以对象的形式在程序中使用,并且程序中的有些对象(数据对象)得永久保存在数据库中,故就出现了ORM,说得更通俗点:ORM就是将数据库中的数据和程序中的对象进行互相的转换! 如今的ORM框架可以说是很丰富的:Hibernate,开源 ORM 框架.. 阅读全文

ssh配置的一些简便方法

2012-12-25 00:12 by eoeAndroid社区, 127 阅读, 收藏,
摘要: 如ssh集成hibernate的xml映射2种方法 <!-- mappingResouces属性用来列出全部映射文件 --> <!--<property name="mappingResources"> <list> <value>com/model/Novel.hbm.xml</value> <value>com/model/NovelType.hbm.xml</value> </list> </property>--> //在com/model/map 阅读全文

hibernate的搭建(包括Spring集成)和调用

2012-12-25 00:11 by eoeAndroid社区, 140 阅读, 收藏,
摘要: 一.非Spring集成的搭建和使用1.首先我们得下载Hibernate的需要的jar包(通常情况下导入hibernate3.jar和require文件夹里面的所有jar包). hibernate3.jar: 这个是Hibernate的核心包,所以是必须的jar包. cglib-2.2.jar: cglig库,Hibernate用它来实现PO字节码的动态生成,非常核心的包,所以也是必须的包 dom4j.jar dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使... 阅读全文

json返回hibernate的结果会自动调用(get)查询出关联表的数据,解决方法

2012-12-25 00:09 by eoeAndroid社区, 147 阅读, 收藏,
摘要: //防止json数据用类的get方法访问关联类的所有数据,如果不需要关联的数据,set关联的Nullfor(Novel novel : novelList){novel.setNovelType(null);}comentData.put("rows", novelList); 阅读全文

hibernate HQL查询

2012-12-24 12:53 by eoeAndroid社区, 144 阅读, 收藏,
摘要: Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。第15章HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。15.1.大小写敏感性问题除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以SeLeCT与sELEct以及SELECT是相同的,但是org.hi 阅读全文