映射的POJO类型中如果有基本类型最好都是用包装类来代替;

注意关联关系的正确设置,一对一(主键方式、外键外键方式),一对多和多对多的配置,单向、双向的配置;

更新核心配置文件的mapping:如果是在hibernate.cfg.xml中以导入映射文件的方式配置的话,注意在增加了新的domain类之后要将新的映射配置文件加入进去;

注意hibernate管理的对象的状态:是瞬时态还是托管态?有时候事务结束了之后还去读代理对象的值,这个时候设置了延迟加载的话会报错的;

注意在一对多主键级联操作的时候外键为NOT NULL可能会引发违例操作,这就和hibernate执行sql语句有关了;

在一对多关联中,常把多的一方作为主动关联方,由它去维护关联关系;也就是将many的一方inverse=false,而且这样也有助于改善性能;维护关联关系体现在将对方的引用设置到自己的属性当中;

尽量少用多对多关联(可以用多个一对多关联来来代替多对多关联);

多对多注意设置延迟加载,避免无谓的性能开销;

多对多关系中由于关联关系是两张表相互引用,因此在保存关联状态时必须双方同时保存,体现在二者互相设置对方的引用;

一对多关系的维护可以是双方都维护,也可以是由一方维护,但是多对多中仅且仅有一方维护关系(也就是inverse的设置);

在一个session中对同一个id最多只能有一个与之对应的瞬时态对象

在修改或这个删除的时候最好都是先查出要修改的对象,再进行操作,这样可以避免原来的关联关系;

通过引用查询可以不在代码中出现HQL/SQL语句;

对Action中对托管态对象的修改由于事务已经关闭而不会同步到数据库中;

避免查询时的SQL语句的N+1问题;

在需要的时候可以将延迟加载设置为false,在class标签中,这样在Session关了之后依然可以使用关联对象;

在编写POJO的时候,必须使用JDK的接口,而不应该使用JDK Collection的实现类,因为Hibernate返回的Set是Hibernate对Set接口的特定实现,因而会造成强转错误;

属性的延迟加载可以在<property>标签中设置,但是要对类进行加强;

Hibernate的内部缓存机制可能造成进行大量插入操作的时候OutOfMemory:可以每隔一段时间清空一次缓存;二是可以在核心配置文件的<session-factory>标签中加入<property name="hibernate.jdbc.batch_size">25</property>来进行批量插入;

hibernate中分页操作的实现;

hibenate的长对话session实现在web项目可以用Spring提供的OpenSessoinInView实现;

有问题欢迎相互探讨!

Hibernate使用注意事项的更多相关文章

  1. hibernate配置注意事项

    1:多对一配置 private Set<DrawRecordModel> cjrecordsSet = new HashSet<DrawRecordModel>(); 正确 p ...

  2. Hibernate criteria 混合sql语句多表关联时查询注意事项

    直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...

  3. (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)

    一.先上知识点: 1.hibernate多对多关联关系中最重要的参数是(基于配置文件xxx.hbm.xml文件形式): 1):inverse属性,如果设置inverse=“true”就代表让对方参与维 ...

  4. 整合struts2+hibernate详细配置步骤及注意事项

    刚刚学完这两个框架,就迫不及待的做了一个例子,在整合两个框架的时候,也碰到了一些小问题,下面介绍一下配置的步骤: 1.创建一个自定义的struts2和hibernate的类库 因为之前写例子都是直接将 ...

  5. 。。。Hibernate注解配置的注意事项。。。

    今天本来打算录视频的,突然遇到一个拦路虎,Hibernate注解配置,有一个注意点:要么都在属性上面注解配置,要么都在getXX()方法上面用注解配置,要不然就会报错: Caused by: org. ...

  6. hibernate中session的获取使用以及其他注意事项

    hibernate中session的获取使用以及其他注意事项 前言:工作时,在同时使用Hibernate的getSession().getHibernateTemplate()获取Session后进行 ...

  7. spring+hibernate+Struts2 整合(全注解及注意事项)

    最近帮同学做毕设,一个物流管理系统,一个点餐系统,用注解开发起来还是很快的,就是刚开始搭环境费了点事,今天把物流管理系统的一部分跟环境都贴出来,有什么不足的,请大神不吝赐教. 1.结构如下 2.jar ...

  8. Grails连接外部数据库注意事项Could not determine Hibernate dialect for database name [Oracle]!

    初次使用Grails时,使用其内置数据库,一直不会出错,但迁移到外部数据库时会出错Could not determine Hibernate dialect for database name [Or ...

  9. hibernate detached分离查询 与 抓取策略注意事项

    1.detached在抓取策略为 jion显式左外连接查询情况下 会产生笛卡儿积现象 DetachedCriteria dc = DetachedCriteria.forClass(Topic.cla ...

随机推荐

  1. 从cmd连接mysql数据库控制台

    在cmd中进入mysql安装目录的bin目录然后执行命令 mysql -uuser -ppassword database比如用户名为root,密码为mysql,数据库为test命令如下mysql - ...

  2. Github上的iOS资料-个人记录

    动画 awesome-ios-animation收集了iOS平台下比较主流炫酷的几款动画框架 RCTRefreshControlqq的下拉刷新 TBIconTransitionKiticon 的点击动 ...

  3. Linux下使用expect实现跳板机自动跳转/免密登录/自动登录(转)

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

  4. SQLSERVER LATCH WINDBG

    https://mssqlwiki.com/2012/09/07/latch-timeout-and-sql-server-latch/

  5. Restful Web Service部署到weblogic 12c

    介绍一下环境: 首先需要下载一个jaxrs-ri-2.22.2.zip的包 采用Jdeveloper 12c版本,jdk1.8 WebLogic Server 12.2.1版本 Restful项目建立 ...

  6. SpringMVC学习记录(七)--拦截器的使用

    SpringMVC的请求如以下这样的图所看到的: 能够看出全部的请求都要通过Dispatherservlet来接收,然后通过Handlermapping来决定使用哪个控制器,再依据ViewResolv ...

  7. iOS:实现图片的无限轮播

    为尊重原创,特注明原文链接:http://m.myexception.cn/operating-system/1949043.html 图片轮播及其无限循环效果 平时APP中的广告位或者滚动的新闻图片 ...

  8. Hive中日期函数总结

    --Hive中日期函数总结: --1.时间戳函数 --日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数 select unix_timestamp(); --获得当前时区 ...

  9. nginx linux 安装

    nginx linux 安装 进入http://nginx.org/en/download.html 下载 n  gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gc ...

  10. perl学习笔记——目录操作

    在目录书中移动 chdir 操作副改变当前的工作目录.它和shell中cd命令类似: chdir ‘/etc’ or die “cannot chdir to /etc:$1”; 注意:工作目录不能更 ...