想对那些“迷惑”于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的人提一些建议。的更多相关文章

  1. Spring Hibernate JPA 联表查询 复杂查询(转)

    今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...

  2. Spring MVC+Hibernate JPA搭建的博客系统项目中所遇到的坑

    标签: springmvc hibernate 2016年12月21日 21:48:035133人阅读 评论(0) 收藏 举报  分类: Spring/Spring MVC(6)  Hibernate ...

  3. Spring Hibernate JPA 联表查询 复杂查询

    今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...

  4. spring data jpa hibernate jpa 三者之间的关系

    JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服 ...

  5. spring+hibernate+jpa+Druid的配置文件,spring整合Druid

    spring+hibernate+jpa+Druid的配置文件 spring+hibernate+jpa+Druid的完整配置 spring+hibernate+jpa+Druid的数据源配置 spr ...

  6. hibernate jpa 2.0 报错Hibernate cannot unwrap interface java.sql.Connection

    今天在做报表的时候,利用Hibernate JPA 2.0需要获取数据库连接com.sql.Connection的时候获取不到,网上说用这种方式解决: entityManager.getTransac ...

  7. websphere部署 hibernate jpa & Error 500: javax/persistence/OneToOne.orphanRemoval()Z

    WebSphere 7 & Javax/Persistence/OneToMany.OrphanRemoval() Error 文章出处:http://www.mkyong.com/websp ...

  8. Hibernate JPA 关联关系

    Hibernate JPA 关联关系: 使用cascade做级联操作(只有在满足数据库约束时才会生效): CascadeType.PERSIST: 级联保存,只有调用persist()方法,才会级联保 ...

  9. Hibernate JPA实体继承的映射(二) @MappedSuperclass

    基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中. 1.@MappedSuperclass注解只能标准在类上:@ ...

随机推荐

  1. c# 移除文本文件里的某一行

    参考自:http://zhidao.baidu.com/question/87467507.html //定义一个变量用来存读到的东西 string text = ""; //用一 ...

  2. 【Revit API】梁的净高分析

    原理就是,先从梁的LocationCurve上取点,然后向板的上表面投影.如果有投影点,再从投影点(板上)向梁的底面投影,这时候如果有投影点的话就能得到距离了. 运用该分析的第一条件是梁是在板的上方, ...

  3. Winform Treeview 的按需加载

    最近项目里用到treeview,原先设计的是一开始就把所有数据都加载到treeview里,后来发现客户的数据量实在太大,加载所有数据要2分钟,这个是客户没法接受的.后来就考虑到用户也不是一开始就要看所 ...

  4. Java基础-处理json字符串解析案例

    Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...

  5. Hadoop生态圈-Flume的组件之sink处理器

    Hadoop生态圈-Flume的组件之sink处理器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  6. nova-api源码分析(APP的调用)

    调用APIRouter的 __call__函数 nova/wsgi.py class Router(object): def __init__(self, mapper): self.map = ma ...

  7. System V 与 POSIX

    System V 以及POSIX 对信号量.共享内存.消息队列等进程之间共享方式提供了自己的解决方案.因此,在学习时难免存在疑惑,到底有什么区别,哪种方式更佳.经过网上搜索各种博客,做出简单的总结. ...

  8. 浅说Get请求和Post请求

    Web 上最常用的两种 Http 请求就是 Get 请求和 Post 请求了.我们在做 java web 开发时,也总会在 servlet 中通过 doGet 和 doPost 方法来处理请求:更经常 ...

  9. 【BZOJ】1095: [ZJOI2007]Hide 捉迷藏 括号序列+线段树

    [题目]BZOJ 1095 [题意]给定n个黑白点的树,初始全为黑点,Q次操作翻转一个点的颜色,或询问最远的两个黑点的距离,\(n \leq 10^5,Q \leq 5*10^5\). [算法]括号序 ...

  10. linux系统时间不同步解决办法(同步本地时间)

    改变/etc/目录下的localtime文件,既可以改变当前的时区 1.方法是到/usr/share/zoneinfo目录下找到你要相对应的时区文件,例如上海在/usr/share/zoneinfo/ ...