映射的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. 十. 图形界面(GUI)设计12.滚动条

    滚动条(JScrollBar)也称为滑块,用来表示一个相对值,该值代表指定范围内的一个整数.例如,用Word编辑文档时,编辑窗右边的滑块对应当前编辑位置在整个文档中的相对位置,可以通过移动选择新的编辑 ...

  2. 关于scanf函数的返回值问题

    如: scanf("%d%d",&a,&b); 1.如果a和b都被成功读入,则scanf的返回值为2 2.如果只有a被成功读入,那么返回值为1 3.如果a和b都未被 ...

  3. U盘安装Ubuntu 16.04出现:Failed to load ldlinux.c32

    启动的时候如果不开启UEFI,则会提示: Failed to load ldlinux.c32 Boot failed: please change disks and press a key to ...

  4. 启用多处理器编译--加快VS2013编译

    依次打开项目“属性“==>”配置属性“==>”C/C++(或其它语言)“==>”常规“,最后一项,多处理器编译选择是. 官方解释如下: /MP 选项在命令行上以减少总时间编译源文件. ...

  5. android 两次调用DatePickerDialog.onDateSet()

    在4.2.2版本号上调用系统的DatePickerDialog,发现点击确定时系统调用onDateSet()两次,须要过滤当中的一次. Calendar mCalendar = Calendar.ge ...

  6. phpmyadmin后台4种拿shell方法 && php爆路径大法

    php后台拿shell要知道php的路径,文章下面将讲诉爆php路径的方法!!! 方法一: CREATE TABLE `mysql`.`xss` (`xss1` TEXT NOT NULL ); IN ...

  7. OpenStack制作Windows 2008 KVM镜像

    1.下载驱动程序 [root@linux-node1 ~]# cd /usr/local/src [root@linux-node1 src]# wget https://launchpad.net/ ...

  8. apache poi合并单元格设置边框

    HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //创建一个样式 HSSFCellStyle sty ...

  9. Unity3D之高级渲染-Shader Forge增强版

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家.特邀编辑.畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  10. Spark(八) -- 使用Intellij Idea搭建Spark开发环境

    Intellij Idea下载地址: 官方下载 选择右下角的Community Edition版本下载安装即可 本文中使用的是windows系统 环境为: jdk1.6.0_45 scala2.10. ...