- 浏览: 7339753 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
你以前所参与的项目里面,SQL、HQL,是否满天飞呢?在逻辑层,显示层那里都可以看到随手写的查询语句?这样的做法极度的破坏了分层的架构,无论如何的XP也应该遵循一定的管理与规范,那么统一管理查询语句的重要性就凸现了。
统一管理查询语句有何优点?
1、保持系统的分层架构,管理语句是持久层的责任,由它自己管理是最适合不过。松散的耦合总是我们向往的目标。
2、统一管理方便修改,可以减小人手修改带来的低级错误。
OK,接下来要考虑如何管理这些语句来了。
1、配置文件管理
在hibernate的mapping文件内使用<query>
Xml代码
<query name='findUserById'>
from User eo where eo.id = ?
</query>
<query name='findUserById'>
from User eo where eo.id = ?
</query> <query>里面就是要使用的hql语句 属性name就是语句保存在容器里的别名。
在hibernate的mapping文件内使用<sql-query>
Xml代码
<sql-query name="findUserByName">
<return alias="user" class="hibernate.entity.User"/>
SELECT user.id AS {user.id},
user.name AS {user.name}
FROM t_user user WHERE user.name = ?
</sql-query>
<sql-query name="findUserByName">
<return alias="user" class="hibernate.entity.User"/>
SELECT user.id AS {user.id},
user.name AS {user.name}
FROM t_user user WHERE user.name = ?
</sql-query>
<sql-query>里面的语句必须是sql语句,属性name就是语句保存在容器里的别名,<reruen>里面的东东标明了返回对象的类型与别名,别名主要用于对应sql里面{}的内容。
写好mapping文件后当然要告诉hibernate将这些语句加入到容器里面咯,配置方法有很多种,这里只列了使用spring结合hibernate的配置方式,在SessionFactoryBean的配置里面加入
Xml代码
<property name="mappingLocations">
<list>
<value>
classpath:hbm/name-query.hbm.xml
</value>
</list>
</property>
<property name="mappingLocations">
<list>
<value>
classpath:hbm/name-query.hbm.xml
</value>
</list>
</property>
<sql-query>的使用比较复杂,所以不是遇到复杂的跨表查询时,不推荐使用。
2、标签管理
一般的习惯都是使用@NamedQueries将与自己相关的语句统一在实体里面,如查询User的语句都是放到User对象里面
Java代码
@Entity
@Table(name = "t_user")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( {
@NamedQuery(name = "User.findById",
query = "FROM User eo where eo.id=? ") })
public class User implements java.io.Serializable {
private int id;
private String name;
@Entity
@Table(name = "t_user")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( {
@NamedQuery(name = "User.findById",
query = "FROM User eo where eo.id=? ") })
public class User implements java.io.Serializable {
private int id;
private String name;
使用标签管理可以比较好的分类查询语句,也不用搞麻烦的配置文件,虽然说修改配置文件的查询语句可以不用重新编译就能生效,但是查询语句修改也不会十分频繁,所以标签管理是一个不错的选择。
评论
如
在一些系统将SQL语句放在属性文件中。
在IBatis中一般sql放在配置的xml等进行统一管理
这样的好处方便系统的维护,SQL管理等。^_^
欢迎一起探讨哦
还有你的细粒度权限管理我感觉好像与SQL没有关系吧?
权限管理系统一般为方法级别和用户组级别的哦
我在写数据库访问类的时候,一般将SQL做为类变量,直接写在类的头部。这样开起来也比较清晰,一般不会去拼凑SQL语句。
另外,有一点表示不同意:
统一管理SQL,并不能阻止在显示层出现数据库访问代码。
我博客里面有很多细粒度权限管理讨论,欢迎做客
发表评论
-
【转】在项目中使用多个数据源-多sessionFactory方案
2013-05-10 16:30 3131适用范围:适合SSH架构访问多个数据库, ... -
Hibernate使用中从数据库到模型的加载方式研究
2010-01-28 13:19 1966在项目中数据库中账单Bill一个字段是有多个订单id的以逗 ... -
hibernate中@Transient的使用
2010-01-19 15:20 10707项目中可能有许多实体的需要辅助的属性和方法辅助,hibe ... -
关于hibernate中注解和hbm共存时的加载规律
2010-01-19 15:13 3805项目中使用Spring2.5+hibern ... -
hibernate查询的使用的点滴积累
2010-01-09 13:04 1916/** * 前台查询酒店的级别,设备,类型 * * ... -
Hibernate 的HQL中一个经典函数elements的使用
2010-01-09 12:53 10347在传递索引和元素给集合时(elements and indic ... -
Hibernate关联查询中with的经典使用
2010-01-09 12:42 2215在项目采用Hibernate关联,采用关联使用比较简单,在关 ... -
判断数据库表每条记录中时间段是否在每一个时间段中
2010-01-09 12:35 3100项目中一个成品价格表,每条记录中的价格有一个使用时间 ... -
JPA 中注解一个父类中多个子类实现查询部分子类方法解决方法
2010-01-09 12:10 2073父类: @Entity@Inheritance(stra ... -
Hibernate调用执行存储过程
2010-01-09 12:03 2035项目中需要采用存 ... -
Hibernate的一个异常的解决方案
2009-12-05 11:01 2447在项目中使用HQL时的遇有多个类的嵌套比较发生的异常: ... -
Hibernate的事件和拦截器体系
2009-12-01 13:53 2362持久层框架底层的拦截器机制是对诸如Spring等业务管理容器拦 ... -
Hibernate的拦截器和监听器
2009-12-01 13:52 1978最近项目需要,用到了Hibernate的拦截器和监听器,有些小 ... -
Hibernate的拦截器和监听器
2009-12-01 13:50 3804项目采用Spring构建,持久层技术采用的是 JPA规范 + ... -
Hibernate的注解many-to-one
2009-11-28 12:12 23277項目中一個實例: ... -
Hibernate查询语言HQL 八大要点
2009-11-18 13:15 2014本文讲述Hibernate查询语言HQL。Hibernat ... -
条件查询(Criteria Queries
2009-11-18 13:14 1774... -
Hibernate查询语言(Query Language), 即HQL
2009-11-18 13:05 2480Hibernate查询语言(Query L ... -
Hibernate中的配置属性
2009-11-15 17:40 1761hbm2ddl.auto的使用配置说明: <!-- ... -
Hibernate JPA 的索引的使用
2009-11-15 17:30 11885在Hibernate中Model中一个对象关 ...
相关推荐
本文主要探讨了在使用Hibernate框架进行Java开发时,如何实现查询语句的统一配置管理,以提高代码的可维护性和遵循良好的软件工程实践。统一管理查询语句可以保持系统的分层架构,降低模块间的耦合度,并简化查询...
- **统一管理**:Spring框架可以统一管理应用程序中的所有对象,包括Hibernate SessionFactory等。 - **事务管理**:通过Spring的声明式事务管理机制,可以更方便地控制业务逻辑中的事务边界。 - **配置简化**:...
### Hibernate可选配置详解 #### 一、Hibernate配置项概览 Hibernate作为一款优秀的Java持久层框架,提供了丰富的配置选项,以适应不同场景下的需求。本文档将详细解析Hibernate的各种可选配置,帮助开发者深入...
3. 配置简化:Spring可以统一管理Hibernate的SessionFactory和Session,简化配置文件。 4. AOP集成:Spring的AOP可以与Hibernate的事务管理结合,提供更灵活的事务策略。 四、整合步骤 1. 引入依赖:在项目中添加...
这个配置项指定了Hibernate使用的数据库方言,以生成符合特定数据库的SQL语句。 #### 三、其他核心配置 此外,还有许多其他的配置项可以帮助优化Hibernate的性能或定制其行为,如: 1. **`hibernate.dialect`**:...
- **使用SQL查询**:在查询时,直接使用SQL语句来获取日期时间,避免Hibernate的自动转换。 - **自定义Type**:创建自定义的Hibernate类型,覆盖默认的日期时间处理方式,以满足特定需求。 以上就是关于"解决...
1. Hibernate支持编程式事务管理和声明式事务管理,可以配合Spring等框架实现事务的统一管理。 七、Annotation使用 1. Annotation配置比XML配置更简洁,直接在实体类上定义属性,无需编写额外的映射文件。 2. 使用...
通过Hibernate,开发者可以使用面向对象的方式来操作数据库,无需编写大量的SQL语句。 Hibernate支持实体类、表映射、一对多、多对一、多对多等各种关系的映射,以及懒加载、缓存机制等高级特性。 **Maven** Maven...
Spring还集成了其他框架,包括Struts2和Hibernate,提供了统一的事务管理策略,使得在多个框架间协调工作变得更加简单。 在SSH整合过程中,你需要以下关键的jar包: 1. **Struts2** 相关的jar:包括`struts2-core....
Spring将Hibernate的异常转换为Spring的`DataAccessException`系列异常,使得异常处理更加统一。 10. **测试与调试** 在集成环境中,我们可以使用Spring的`TestContextFramework`进行单元测试,它能够自动配置...
合理设计和缓存查询语句,以及对查询结果进行缓存,都是提升性能的有效手段。 4.3 模块化设计 为了提高代码的可维护性和复用性,可以将动态数据库操作封装成独立的服务或组件,提供统一的接口供其他模块调用。 ...
在订单管理系统中,Hibernate通过实体类和配置文件,自动处理SQL语句,减少了开发者对数据库操作的繁琐工作。它可以轻松地进行数据的增删改查,支持事务管理和缓存机制,提高了数据访问的性能。 JUI,全称Java User...
在海关管理系统中,Hibernate用于管理数据库交互,通过实体类与数据库表进行绑定,提供了一种无需编写大量SQL语句的方式来操作数据。Hibernate的核心配置文件(hibernate.cfg.xml)定义了数据库连接信息,实体类通过...
- **事务管理**:Hibernate提供了统一的事务管理机制,可以方便地处理复杂的事务逻辑。 ### 使用Hibernate的步骤 1. **环境搭建**:首先需要配置好JDBC驱动,建立数据库连接,并导入Hibernate相关的jar包。 2. **...
- **查询语言**:支持HQL(Hibernate Query Language)和原生SQL查询。 **1.4 Hibernate4体系结构** Hibernate4的核心模块包括Session、SessionFactory、Transaction等。其中SessionFactory是创建Session的工厂,...
3. **配置Hibernate**:在Hibernate的配置文件中,设置`hibernate.transaction.jta.platform`属性为Spring的`PlatformTransactionManager`实现,让Hibernate知道使用Spring管理事务。 4. **声明式事务管理**:在...
在Hibernate中,DOM4J用于解析和生成XML配置文件,如Hibernate的映射文件(.hbm.xml),以及处理HQL查询结果。 5. **其他组件**:除了上述核心组件,这个完整包可能还包括Hibernate的其他辅助库,如JTA(Java ...
1. **自动持久化**:通过注解或XML配置,Hibernate能自动将Java对象映射到数据库表,无需手动编写SQL语句。 2. **对象查询语言(HQL)**:HQL允许开发者使用面向对象的语法进行数据库查询,降低了SQL的依赖性。 3. *...
同时,还需要配置数据源、Hibernate的属性,如hibernate.dialect(数据库方言)、hibernate.show_sql(是否显示SQL语句)等。 2. **Ehcache集成** 首先,引入Ehcache的jar包,然后在Spring配置文件中声明...