Hibernate
鹅
这个作者很懒,什么都没留下…
展开
-
JPA @MappedSuperclass注解的使用说明
基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang.annotation.ElementType.TYPE}) 2.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射转载 2013-06-15 10:29:50 · 581 阅读 · 0 评论 -
Hibernate与数据库分表
数据库分片(shard)是一种在数据库的某些表变得特别大的时候采用的一种技术。 通过按照一定的维度将表切分,可以使该表在常用的检索中保持较高的效率,而那些不常用的记录则保存在低访问表中。比如:销售记录按照时间来切分。(横向切分)也可以根据地域进行拆分,使得每个地区访问自己的表从而进行负载均衡。(纵向切分)也可以纵横切分,使表拆的更细致。也可以分库,让不同的数据存放在不同的服务器转载 2013-12-05 15:05:33 · 1211 阅读 · 0 评论 -
用Hibernate实现领域对象的自定义字段
导言 在开发企业级业务应用(企业规模)时,客户往往要求在不修改系统源代码的情况下对应用对象模型的扩展性提供支持。利用可扩展域模型可以实现新功能的开发,而不需要额外的精力和成本。1、应用的使用周期将被延长; 2、外部因素改变时,系统工作流也可以随之被修改; 3、已经被部署的应用可以被“设定”,使其符合企业的特定情况。 完成以上功能需求最简单、最具成本效益的方法应该是在应用中实现转载 2013-12-25 17:52:49 · 604 阅读 · 0 评论 -
组件(Component)映射
第 9 章 组件(Component)映射9.1. 依赖对象(Dependent objects)9.2. 在集合中出现的依赖对象(Collections of dependent objects)9.3. 组件作为 Map 的索引(Components as Map indices )9.4. 组件作为联合标识符(Components as composite identif转载 2013-12-26 11:06:39 · 730 阅读 · 0 评论 -
Hibernate自定义表单完全解决方案(无需重置SessionFactory)
最近开发的一个系统,需要在不更改代码和重启系统的情况下提供对用户自动建表的支持,由于系统应用了hibernate,所以在建表同时也要建立持久化对象以及对这些对象注册,人渣我首先想倒的是 baidu和google,哪知一番搜索下来,发现都不尽入人意,于是乎,造轮子之路开始了 数据库我是采用的oracle9i,目前在比如数据库类型支持,还有对象关系支持上都很简单,不过在现有基础上进行扩展,都是可以转载 2013-12-26 16:34:20 · 697 阅读 · 0 评论 -
Hibernate 二级缓存 总结整理
和《Hibernate 关系映射 收集、总结整理》 一样,本篇文章也是我很早之前收集、总结整理的,在此也发上来 希望对大家有用。因为是很早之前写的,不当之处请指正。 1、缓存:缓存是什么,解决什么问题?位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache(摘自Robbin的《缓存技术浅谈》)。目的:让数据更接近于应用程序,协调速度不匹配,使转载 2014-03-04 16:00:32 · 475 阅读 · 0 评论 -
Hibernate注释下的自定义架构实现
对于Java开发人员,Hibernate 3 annotations提供了非常好的方式来展示域分层。你可以很轻松的通过Hibernate自动生成需要的数据库架构,带有完整的SQL脚本。然而回到现实世界,你还需要考虑到,有时数据库管理员所使用的模糊的命名惯例。本文中,“Java Power Tools”的作者John Ferguson Smart将告诉你如何通过Hibernate自动生成数据库架构,转载 2014-03-04 14:14:46 · 591 阅读 · 0 评论 -
Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate如果是在配置文件的话那就是dynamic -insert 和 dynamic-update这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两转载 2014-03-12 14:10:04 · 594 阅读 · 0 评论 -
Hibernate中Criteria的完整用法
最近在项目中使用 Spring 和 Hibernate 进行开发,有感于 Criteria 比较好用,在查询方法设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装。现在对 Hibernate的Criteria 的用法进行总结: Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供了 Criter转载 2014-03-11 18:30:07 · 471 阅读 · 0 评论 -
Hibernate二级缓存详解
与Session相对的是,SessionFactory也提供了相应的缓存机制。SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存。 SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的副本,而预定义SQL语句是在 Hibernate初始化阶段根据映射元数据推导出来的。SessionFactory的内转载 2014-03-12 14:43:35 · 389 阅读 · 0 评论 -
Hibernate乐观锁和悲观锁浅析
业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其他程序修转载 2014-04-01 19:36:09 · 451 阅读 · 0 评论 -
利用 JPA 2.0 二级缓存实现高速数据访问
免费下载:IBM® WebSphere® Application Server 试用版下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。引言随着信息量的爆炸式增长,以及信息化应用的不断深入,缓存(Cache)对应用程序性能和数据库访问的优化变得越来越重要。将所需服务请求的数据存储到缓存中,可以提高应用程序访问数据的速度转载 2013-12-05 17:40:19 · 924 阅读 · 0 评论 -
JPA中利用二级缓存优化访问性能(转载)
JPA使用也有好几年了,但是一直都没有对其中的缓存机制使用,我们知道在JPA2.0以后,作为JAVA6的标准,JPA2.0增加了对二级缓存的支持,比如中间件websphere、weblogic、JBOSS等也都相应提供了对OpenJPA2.0以及JPA二级缓存的支持,OpenJPA的缓存机制要比其他的ORM框架自带的缓存要强大的多,其他的ORM框架如hibernate自带的缓存Session级别的转载 2013-12-05 17:39:37 · 2244 阅读 · 0 评论 -
JPA批量插入
EntityManagerFactory emf = Persistence.createEntityManagerFactory("DataSourceDB2"); EntityManager em = emf.createEntityManager(); EntityTransaction et = em.getTransaction();转载 2013-12-05 17:36:22 · 7885 阅读 · 0 评论 -
乐观锁与悲观锁
文章转自网上好像是玉米田的,忘记了锁( locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样转载 2013-07-09 13:55:36 · 364 阅读 · 0 评论 -
hibernate批量操作优化
Hibernate批量更新和批量删除批量添加 1(转)(2012-06-12 19:29:22)转载▼通常,在一个Session对象的缓存中只存放数量有限的持久化对象,等到Session对象处理事务完毕,还要关闭Session对象,从而及时释放Session的缓存占用的内存。批量处理数据是指在一个事务中处理大量数据。以下程序在一个事务中批量更新CUSTOMERS表中年龄转载 2013-07-09 17:09:27 · 693 阅读 · 0 评论 -
改善Hibernate性能――Hibernate的精细化使用总结
Hibernate使用不好就很容易出现性能问题。在这里总结一些方法以供参考。1.按需加载多对一的情况下一方的加载,一对多的情况多方的加载,默认都是延迟加载,为避免产生多条语句而导致多次DB往返,可以改变抓取策略,让Hibernate采用表连接来一次获取。例如,Item和History是一对多。使用Hsql Java代码 From Item item j转载 2013-07-09 17:17:29 · 613 阅读 · 0 评论 -
JPA 映射时间(Temporal)类型@Temporal
在进行实体映射时,有关时间日期类型的类型可以是java.sql包下的java.sql.Date、java.sql.Time 和java.sql.Timestamp,还有java.util包下的java.util.Date 和 java.util.Calendar类型。默认情况下,实体中使用的数据类型是java.sql包下的类,但此时如果要使用java.util包中的时间日期类型,则需要而外标注@T转载 2013-06-25 20:28:28 · 911 阅读 · 0 评论 -
Hibernate性能优化技巧
文章分为十三个小块儿对Hibernate性能优化技巧进行总结性分析,分析如下:一、在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session. clear()或者session. evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象。二、对大数据量查询时,慎用lis转载 2013-06-29 13:09:43 · 529 阅读 · 0 评论 -
Hibernate Annotation关系映射, 级联cascade属性
一。 Hibernate Annotation关系映射1、一对一外键关联映射(单向)2、一对一外键关联映射(双向)3、一对一主键关联映射(不重要)在这不演示在实际中很少用,使用注解@PrimaryKeyJoinColumn意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML映转载 2013-08-05 16:30:08 · 710 阅读 · 0 评论 -
不要重复 DAO! 使用 Hibernate 和 Spring AOP 构建泛型类型安全的 DAO
对于大多数开发人员,为系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复标识为 “代码味道”,但我们大多数都已经学会忍受它。其实有解决方案。可以使用许多 ORM 工具来避免代码重复。例如,使用 Hibernate,您可以简单地为所有的持久域对象直接使用会话操作。这种方法的缺点是损失了类型安全。为什么您要为数据访问代码提供类型安全接口?我会争辩说,当它与现转载 2013-08-06 11:50:54 · 683 阅读 · 0 评论 -
hibernate 的cast函数
代码如下: String jpql = "select a from DeliverychargesItem a where 1=1"; List params = new ArrayList(); if (condition.get("companyCode") != null) { jpql += " and a.company.原创 2013-08-09 16:34:41 · 3965 阅读 · 1 评论 -
Hibernate中HQL函数汇总及其说明
Hibernate中HQL函数汇总及其说明(2012-07-06 20:37:16)转载▼标签:it分类:技术Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate QueryLanguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐转载 2013-08-09 16:44:27 · 4638 阅读 · 0 评论 -
NHibernate实践总结(三)HQL的theta-style join对无关联实体的连接与应用
NHibernate实践系列1、 NHibernate实践总结(一)2、 NHibernate实践总结(二) 在mapping文件中设置抓取策略对HQL与Criteria造成不同影响的测试与验证一、引言 大部分管理信息系统(MIS)都少不了员工(用户)与操作日志,当为员工创建帐号并分配相应的权限后,该帐号即可登录系统并进行相应的操作。当员工与系统进行交互操作时,系统会把员转载 2013-08-29 18:01:39 · 656 阅读 · 0 评论 -
解决MySQL查询不区分大小写
今天遇到一个情况, 查询数据时查询条件输入不管大小写,都能查到同样的数据。 比如: 输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件是大小写不敏感的。 因为程序使用了hibernate框架访问mysql数据库。 一开始以为是hibernate的问题。 最跟踪了一下hibernate代码没有看到转换大小写的步骤,最后确认hibernate其实只不过是将hql转化为sq转载 2014-04-18 09:03:18 · 444 阅读 · 0 评论