迷茫于Hibernate/JPA的人提一些建议。
想对那些“迷惑”于Java ORM框架的J2EE开发人员提一些建议,希望能够对他们
更深入的理解和运用J2EE ORM框架来提速工作有所帮助,这些建议可能显得有些”陈旧“和”肤浅“,
因为最近半年我没有再过多的关注Java ORM,并且也没有继续关注J2EE领域新进展。
在合理的使用Java ORM框架之前,必须要对他们有基本的了解,以下几点是最基本的也应该需要
深刻掌握的基础:
* 关键API接口的深刻理解,并且大致清楚其内部逻辑机制。
* 深刻理解经典对象关系与数据库表schema之间的映射关系,特别是外键的关系。理解为何需要如此建立外键。
* Session对象状态管理机制的深刻理解,受管对象的状态迁移如何进行? 受管对象的状态如何发生变化? 这些状态对应于
底层数据库何种操作(update,insert,delete)?
* 级联操作的深刻理解
* Session 和 Transaction的关系,Session和Transaction的生命周期。
* 一级缓存和二级缓存的深刻理解
* 常见的ORM异常错误产生的原因和解决方式:
>> a different object with the same identifier value was already associated with the session
>> session already closed Exception
* Lazy load对于性能优化的作用与机制。
* 在二级缓存中存在脏数据的操作陷阱。
* 性能调优的基本技巧: 观察生成的SQL,优化HQL/EQL查询。几个基本建议: SQL查询优化技巧完全
可以应用于HQL/EQL的查询,比如:合理索引的建立,注意复合索引的处理技巧,
避免过长的join,注意Join的顺序,注意where条件的顺序。
* 二级缓存的合理优化,如果二级缓存对于内存有限制,请合理设计二级缓存的使用。
* 清楚ORM和传统JDBC操作的优缺点,在Ibatis、Spring JDBC Template、ORM等框架间作合理的选择。
* 使用Spring框架的时候,深刻理解Spring的事务管理机制。如果是初学,请仔细阅读文档,并反复实践。
迷茫于Hibernate/JPA的人提一些建议。的更多相关文章
- Spring Hibernate JPA 联表查询 复杂查询(转)
今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...
- Spring MVC+Hibernate JPA搭建的博客系统项目中所遇到的坑
标签: springmvc hibernate 2016年12月21日 21:48:035133人阅读 评论(0) 收藏 举报 分类: Spring/Spring MVC(6) Hibernate ...
- Spring Hibernate JPA 联表查询 复杂查询
今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...
- spring data jpa hibernate jpa 三者之间的关系
JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服 ...
- spring+hibernate+jpa+Druid的配置文件,spring整合Druid
spring+hibernate+jpa+Druid的配置文件 spring+hibernate+jpa+Druid的完整配置 spring+hibernate+jpa+Druid的数据源配置 spr ...
- hibernate jpa 2.0 报错Hibernate cannot unwrap interface java.sql.Connection
今天在做报表的时候,利用Hibernate JPA 2.0需要获取数据库连接com.sql.Connection的时候获取不到,网上说用这种方式解决: entityManager.getTransac ...
- websphere部署 hibernate jpa & Error 500: javax/persistence/OneToOne.orphanRemoval()Z
WebSphere 7 & Javax/Persistence/OneToMany.OrphanRemoval() Error 文章出处:http://www.mkyong.com/websp ...
- Hibernate JPA 关联关系
Hibernate JPA 关联关系: 使用cascade做级联操作(只有在满足数据库约束时才会生效): CascadeType.PERSIST: 级联保存,只有调用persist()方法,才会级联保 ...
- Hibernate JPA实体继承的映射(二) @MappedSuperclass
基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中. 1.@MappedSuperclass注解只能标准在类上:@ ...
随机推荐
- 洛谷P1280 尼克的任务
这个DP气死我了.....写的时候脑子比较迟钝于是爆0了好几次,最后还是我旁边的AKIOI巨佬告诉我解法才会做. 我一开始设计的状态是f[i]表示i时刻正在休息,从1到i的最长休息时间. 然后经历了各 ...
- Java Try-with-resources
目录 资源管理与 Try-Catch-Finally,旧风格 Try-with-resources 管理多个资源 自定义 AutoClosable 实现 Try-with-resources 是 ja ...
- std::bind常见的坑
http://note.youdao.com/noteshare?id=bce9cdea8e94501186b5ba3026af685f
- 【leetcode】 Validate Binary Search Tree
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
- Python模块调用方式详解
Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...
- sh脚本学习之: 命令处理
输出 默认是命令行输出 > 替换输出 >> append输出 2> 错误输出 < 由文件输入 <<eof 控制台输入,eof为输入结束标志 /dev/nul ...
- 使用data:uri上传图片
上传图片的方式有两种,一种是使用传统的html控件的方式,设置form属性为multipart/form-data.这种方式兼容ie6,ie7.另一种方式是使用data:uri,将base64编码从浏 ...
- [原]Android Fragment 入门介绍
Fragment Fragment 产生,优点,用途,使用方法简介 1 Fragmeng简介 自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片.片段.其上的是为 ...
- ASP.net学习总结
学习ASP.net又一次接触了B/S开发.下面先通过一张图对ASP.net有一个宏观结构的总结.之后将详细介绍ASP.net中的六大对象. 1.Request从客户端得到数据,包括基于表单的数据和通过 ...
- 【51Nod】1920 空间统计学 状压DP
[题目]1920 空间统计学 [题意]给定m维空间中的n个点坐标,满足每一维坐标大小都在[0,3]之间,现在对于[0,3*m]的每个数字x统计曼哈顿距离为x的有序点对数.\(n \leq 2*10^5 ...