fireflyc 写道
嘿嘿,这个帖子挺热。似乎javaeye上的这种帖子都很热。。。。。都要成框架生产基地了。每天都有伟大的东西诞生,不知道是喜还是忧。
看了一下楼主的想法,无非是根据tableName和类的属性生成SQL语句。这种做的原因无非是觉得hibernate是如何如何的差。其实事情没有那么糟糕,
如果说Hibernate差,那么楼主的东西比Hibernate更差。
楼主的东西也是一种根据Class推导出SQL语句的。而hibernate也是这样的。所以设计思想上是相通的。而楼主的做法不如hibernate的原因是因为,hibernate底层有不通的数据库SQL生成引擎(这个命名。。。呵呵),而且有二级缓存,关联查询,HQL查询语句等等功能。而比起楼主的做法要丰富的多。所以如果说Hibernate差那么楼主的做法比Hibernate更差。
楼主觉得Hibernate差的原因无非是因为“我们需要一个与StudentSchema类似的POJO类,一个DAO类,一个*.hbm.xml映射文件,才能达到类似的效果,机制繁琐,性能消耗明显要高。 ”事实果真如此吗?不尽然,不妨分析一下:
首先是需要一个POJO得javabean,里面到底要不要包含序列化得业务逻辑?如果包含,那么就是富领域对象了,如果不包含就是贫血对象了。而对于java开发人员来讲贫血的是更普遍的。数据承载对象由javabean的model负责,而业务逻辑有service负责。所以POJO类是一定需要的。至于DAO,完全可以省略了,我们只需要一个Service层就可以了。这里不妨引用一下我随手找大一些代码段
public Page<SiteUser> findUserByPage(int pageno) {
String hql = "FROM SiteUser siteUser";
return siteUserDao.pagedQuery(hql, pageno, Constants.PAGE_SIZE);
}
public void saveUser(String userName) {
SiteUser entity = new SiteUser();
entity.setName(userName);
entity.setSiteId(UUIDGenerator.generateUUID());
entity.setPwd(MD5.crypt(entity.calPwdCode()));
siteUserDao.save(entity);
}
public void updateUser(String userId, String userName) {
SiteUser entity = siteUserDao.get(userId);
entity.setName(userName);
entity.setSiteId(UUIDGenerator.generateUUID());
entity.setPwd(MD5.crypt(entity.calPwdCode()));
siteUserDao.save(entity);
}
public SiteUser auth(String userName, String siteId) {
String hql = "FROM SiteUser siteUser WHERE siteUser.name=? AND siteUser.siteId=?";
return siteUserDao.findOne(hql, userName, siteId);
}
这里的DAO其实是
private HibernateDao<SiteUser> siteUserDao;
也就是所DAO层名存实亡了。
那么还有一个配置文件的问题,这个基本上不是问题,使用JPA的注解。最佳实践是尽量的少写JPA的注解,尽量默认。看我的注解对象
@Entity
public class SiteUser extends JPAModel {
@Id
private String id = UUIDGenerator.generateUUID();
@Column
private String name;
@Column
private String siteId;
@Column
private String pwd;
@Column
private Date addDate = new Date();
只需要在spring里的sessionFactory定义一下
<property name="namingStrategy">
<bean class="org.hibernate.cfg.ImprovedNamingStrategy" />
</property>
就会完成名称的“约定大于配置”
如此,这些事情也不再繁琐了。得到的好处也是显而易见的了:我们能使用hibernate的save,update,deleteById等基本操作,书写HQL语句要比书写SQL语句更短一点更容易理解一点。现在Hibernate才是被我们玩而不是我们被它玩了。
分享到:
相关推荐
Struts 是一个 MVC(Model-View-Controller)架构的 Web 框架,Spring 提供了一个全面的后端服务管理平台,而 Hibernate 则是用于对象关系映射(ORM)的框架,简化了数据库操作。下面将详细介绍这三个框架的基本概念...
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
【标题】"hibernate学习笔记-01helloworld"主要涵盖了Hibernate框架的基础入门知识,是初学者了解和掌握Hibernate的重要起点。Hibernate是一款强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者...
【Hibernate学习笔记(1-13)】是传智播客李勇的教程,涵盖了Hibernate框架的基础到进阶内容。Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
### Hibernate—我的Hibernate学习笔记 #### 一、对象持久化的理论与实践 ##### 对象持久化概念 对象持久化指的是将内存中的对象状态保存至外部持久性存储设备(如硬盘),以便于日后需要时能够恢复其状态。这一...
Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
接下来是“马士兵hibernate学习笔记.doc”。Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用对数据库的操作。Hibernate允许开发者使用Java对象来操作数据库记录,减少了SQL的编写工作。笔记可能讲解了...
### 马士兵Hibernate学习笔记知识点总结 #### 一、HelloWorld示例 - **目的**:通过简单的示例理解Hibernate的基本使用流程。 - **步骤**: - 创建Java项目`hibernate_0100_HelloWorld`。 - 建立库依赖,包括...
《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...
### Hibernate学习笔记01 #### 一、Hibernate简介与安装 **Hibernate** 是一款开源的对象关系映射(Object Relational Mapping, ORM)框架,它能够有效地简化Java应用程序与数据库之间的交互,提供了一种更为优雅...
根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...
【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...
### 对象持久化与Hibernate学习笔记 #### 一、对象持久化的概念与重要性 - **定义**: 对象持久化是指将程序中的对象状态存储到持久化存储设备上的过程,以便在程序结束运行后仍然可以保留这些数据。 - **必要性**:...
### JDBC与Hibernate学习笔记 #### 一、JDBC概述 **1.1 ODBC与JDBC的区别** - **ODBC(Open Database Connectivity)**: 开放式数据库连接是一种开放标准的应用程序接口(API),用于实现数据库应用程序与不同...