基于Hibernate实践对ORM模式的一点思考

实现持久层的方法有很多,最简单的,直接拿到DB的connect然后执行命令,往复杂的说,有各种ORM机制,还有hibernate框架等等。
这两天一直在尝试着用Python构建之前的项目,在持久层方面用的是最简单的方式,但是很快就出了些问题。例如在Python存储MySql的BLOB对象时,通过%s,mysqldl.binary()的方式,发现转string的时候经常失败,可能是由于语句中的特殊符号引起的。
进行项目开发的时候最好采用规范化的流程,可以避免出现很多不必要的问题,磨刀不误砍柴功。

概述

对于web应用,有四层结构,如下图。
在进行开发时,出于结构话考虑,在业务层编写service并定义dto。
在持久化层定义POJO,并完成持久化层的逻辑。
Created with Raphaël 2.1.0 表示层 表示层 业务逻辑层 业务逻辑层 持久化层 持久化层 数据库层 数据库层 DTO 调用 POJO

Hibernate的实现

1. DB中创建表
2. 编写POJO:注意POJO必须有一个默认的构造方法,用于java的反射以生成持久化类(也就是entity)。用该有getter和setter方法。主键标识。
3. 编写POJO与DB的映射文件XXX.hbm.xml(通常IDE会代劳)
4. 编写hibernate.cfg.xml或者hibernate.properties文件(通常IDE会代劳,只需改些配置)
5. 编写工具类xxUtil.java:用于读取hibernate配置并且编写session获取逻辑,在spring项目中,可以将这部分作为java bean,供之后调用。
6. 编写通用Repository接口,可以继承一些通用方法类和下面7中的类,任何DAO相关的调用可从此接口发出。
7. 编写RepositoryCustom接口,可以写一些自定的方法名。
8. 编写RepositoryImpl类,继承7中接口,用来实现自定义方法。
9. 编写RepositoryQueryBuilder类,如果8中的方法过长,可以将query生成部分放到此类中。

对于每一个entity来说,可以有一套6-8的方法,这样分类结构清晰,也便于后期维护。

基于上述hibernate流程的发散

按照web的分层结构进行开发看似繁琐,其实做好是相当有意义的。
项目进行持续开发拓展时,良好的结构可以免去很多麻烦。
刚接触大型项目的人可能不是很了解,觉得怎么方便怎么来,但是时间长了,所有代码都会乱成一团。我自己开始玩的时候就开发过很多东西,到最终都变得项目无法进行拓展,有大的改动都需要从头做起。

对于所有可以持久化的DB,都可以采用上述模型。
把所以repository相关的调用都放到Repository接口中。
把所有业务逻辑相关的代码都放到service中。

ORM的拓展

T.B.D

Redis

MongoDB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值