hibernate+spring架构有感(一)

2014-11-24 01:03:52 · 作者: · 浏览: 2


一 前言

博主是一名二流大学的本科生,今年大三。于2014年3月17学完ajax,jQuery有感,同时对hibernate+spring的架构有所感触。


二 Hibernate+Spring架构有感

前言:

众所周知,一个web项目的架构非常重要,一个优秀的架构不仅让系统能够顺畅的运行,同时也能够极大的提高程序员对web工程的认知以及掌握。

架构分层:

一般来说一个学完Struts+Hibernate+Spring的人都能够说出来大致的框架,一般分为实体层: 叫做bean, model, domain等等,但是都代表着同一种意思,都是实体对象的象征。持久化接口层: 一般叫做Dao,这里面会把对 数据库的一般操作抽象定义出来成为接口层(增删改查等等)。持久化实现层: 一般叫做DaoImpl,这里面会对接口层进行实现,负责真正的持久化访问功能。业务逻辑层:一般较作service层,业务逻辑层组件依赖于底层的Dao组件(也就是HIbernteaDao层),该层专注于提供业务逻辑功能,不涉及持久化访问。键值层: 一般较作vo层,亦或是dto曾,代表的是,该曾定义的对象,仅仅是作为数据传输所使用的。web层: 一般也就叫做web层,是前台访问与调用业务逻辑组件的地方,也是操作最为复杂的核心地带。这里完成前台的操作以及响应。 \之所以今天会写这篇博客,就是因为这个album的小项目对自己的架构概念有了新的感觉。可以很清楚的看到album包的分层。其中 Z http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcmcuYWxidW0uYmVhbiC21NOm18XKtczlsuNvcmcuYWxidW0uc2VydmljZbbU06bXxdK1zvHC37ytsuO1xLPpz/OjrLb4b3JnLmFsYnVtLnNlcnZpY2UuaW1wbMrH0rXO8cLfvK2y47XE1ebV/cq1z9ZvcmcuYWx1Ym0udm+21NOm18W8/CYjMjA1NDA7suNvcmcuYWxidW0ud2VittTTptfFd2VisuNvcmcuY29tbW9uLmRhb7rNb3JnLmFsYnVtLmRhb7bU06bXxUhpYmVybmF0Zb3Tv9qy429yZy5jb21tb24uZGFvLmltcGy6zW9yZy5hbGJ1bS5kYW8uaW1wbLbU06bXxUhpYmVybnRhZbXEyrXP1rLjoaMg1eLA79Pryc/OxMu1tcTT0Mv5srvSu9bCo6zPws7Eu+G4+LP2y7XD96GjCgo8L2Jsb2NrcXVvdGU+CjxibG9ja3F1b3RlPgo8aDQ+PHN0cm9uZz631rLjtPrC68/qveKjujwvc3Ryb25nPjwvaDQ+CjxibG9ja3F1b3RlPgo8aDU+YmVhbrLjo7o8L2g1Pgo8L2Jsb2NrcXVvdGU+CjxibG9ja3F1b3RlPgo8YmxvY2txdW90ZT4KPHA+08nT2rn909q88rWlvs2yu9TZ1eLA78z5s/Y8L3A+CjwvYmxvY2txdW90ZT4KPGg1PrPWvsO7r7LjOjwvaDU+CjwvYmxvY2txdW90ZT4KPC9ibG9ja3F1b3RlPgo8YmxvY2txdW90ZT4KPGJsb2NrcXVvdGU+CjxibG9ja3F1b3RlPgo8cD4oMSm5stDUtcQ8YnI+CjwvcD4KPHA+1eLA76OsuPzOqrzyveC31sP3tcS9q7TLsuO31r3izqpjb21tb24uZGFvo6i0+rHtubLQ1NO109C1xKOpus1hbGJ1bS5kYW+jqLTLz+7Ev7WltsDTtdPQtcSjqTwvcD4Kb3JnLmNvbW1vbi5kYW8uQmFzZURhbyC0y7Lj1tCw/MCowctISWJlcm5hdGW21Mr9vt2/4rXEuPfW1rv5tKG1xLPWvsO7r7LZ1/ejrLT6wuvI58/CPHByZSBjbGFzcz0="brush:java;">/** * 通用DAO 组件的接口,这七个通用方法是所有DAO组件都应该提供的 * @author administrator * */ public interface BaseDao { /** * 根据ID加载实体 * @param entityClazz 实体类 * @param entityId 实体ID */ T get(Class entityClazz, Serializable entityId); /** * 保存实体 * @param entity 实体 */ Serializable save(T entity); /** * 更新实体 * @param entity 实体 */ void update(T entity); /** * 删除实体 * @param entity 实体 */ void delete(T entity); /** * 根据ID删除实体 * @param entityClazz 实体类 * @param entityId 实体Id */ void delete(Class entityClazz, Serializable entityId); /** * 根据ID数组删除实体 * @param entityClazz 实体类 * @param entityIds 实体Id数组 */ void delete(Class entityClazz, Serializable[] entityIds); /** * 获取所有实体 * @param entityClazz 实体类 */ List getAll(Class entityClazz); /** * 获取实体总数 * @param entityClazz 实体类 * @return */ Long getCount(Class entityClazz); } 接下来是org.common.dao.impl.BaseDaoHibernate4,它是对各种操作的基础性的实现,以下是代码
/**
 * 通用DAO组件的实现类
 * @author administrator
 *
 * @param 
          
           
 */
public class BaseDaoHiberante4
           
             implements BaseDao
            
              { /** * DAO组件进行持久化操作底层依赖的sessionFactory组件 */ private SessionFactory sessionFactory; /** * 无参构造器 */ public BaseDaoHiberante4() { // TODO Auto-generated constructor stub } @SuppressWarnings("unchecked") @Override public T get(Class
             
               entityClazz, Serializable entityId) { // TODO Auto-generated method stub return (T) this.getSessionFactory().getCurrentSession().get(entityClazz, entityId); }