最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
hibernate 查询语句统一配置管理
时间:2008-08-01 编辑:简简单单 来源:一聚教程网
你以前所参与的项目里面,SQL、HQL,是否满天飞呢?在逻辑层,显示层那里都可以看到随手写的查询语句?这样的做法极度的破坏了分层的架构,无论如何的XP也应该遵循一定的管理与规范,那么统一管理查询语句的重要性就凸现了。
统一管理查询语句有何优点?
1、保持系统的分层架构,管理语句是持久层的责任,由它自己管理是最适合不过。松散的耦合总是我们向往的目标。
2、统一管理方便修改,可以减小人手修改带来的低级错误。
OK,接下来要考虑如何管理这些语句来了。
1、配置文件管理
在hibernate的mapping文件内使用
Xml代码
from User eo where eo.id = ?
from User eo where eo.id = ?
在hibernate的mapping文件内使用
Xml代码
SELECT user.id AS {user.id},
user.name AS {user.name}
FROM t_user user WHERE user.name = ?
SELECT user.id AS {user.id},
user.name AS {user.name}
FROM t_user user WHERE user.name = ?
写好mapping文件后当然要告诉hibernate将这些语句加入到容器里面咯,配置方法有很多种,这里只列了使用spring结合hibernate的配置方式,在SessionFactoryBean的配置里面加入
Xml代码
classpath:hbm/name-query.hbm.xml
classpath:hbm/name-query.hbm.xml
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;
使用标签管理可以比较好的分类查询语句,也不用搞麻烦的配置文件,虽然说修改配置文件的查询语句可以不用重新编译就能生效,但是查询语句修改也不会十分频繁,所以标签管理是一个不错的选择。
-
上一个: Tomcat6.0的报错信息
-
下一个: struts练习题
相关文章
- SpringBoot测试配置属性与web启动环境解析 10-24
- vue中将el-switch值true、false改为number类型的1和0解析 10-24
- Vue中的路由配置项meta使用解读 10-24
- SpringBoot自定义bean绑定解析 10-24
- SpringBoot常用计量与bean属性校验和进制数据转换规则解析 10-24
- 工厂方法在Spring框架中的运用介绍 10-24