参数绑定:
都支持位置绑定和命名绑定,
如:
session.createQuery("from Person where id=:id").setInteger("id",1);
session.createQuery("from Person where id=?").setInteger(0,1);
基本的参数绑定:
setString()
setInteger();
等...
特殊的参数绑定
(1)setEntity()
Customer customer = new Customer();
customer.setId(1);
session.createQuery("from Order o where o.customer =:customer ").setEntity("customer", customer);
等价于
session.createQuery("from Order o where o.customer.id =:customerid ").setInteger("customerid", 1);
(2)setParameter()
Query query = session.createQuery("from Order o where o.customer=:customer and o.orderNumber like :orderNumber");
query.setParameter("customer", customer, Hibernate.entity(Customer.class));
query.setParameter("orderNumber", orderNumber, Hibernate.STRING);
setParameter()方法的第三个参数显示指定Hibernate映射类型.以下代码用于绑定一个客户化映射类型.(关于客户化映射类型,参见:http://www.iteye.com/topic/182797)
Query query = session.createQuery("from Customer c where c.homeAddress=:homeAddress");
query.setParameter("homeAddress",homeAddress,Hibernate.custom(AddressUserType.class));
对于某些参数,Hibernate能跟根据参数值的Java类型推断出对应的映射类型,此时不需要在setParameter()方法中显式指定映射类型,如:
Query query = session.createQuery("from Order o where o.customer=:customer and o.orderNumber like :orderNumber");
query.setParameter("customer", customer);
query.setParameter("orderNumber", orderNumber);
对于日期类型,如java.util.Date类型,会对应多种Hibernate映射类型,如Hibernate.DATE或Hibernate.TIMESTAMP,因此必须在setParameter()方法中显式指定到底对应哪种Hibernate映射类型,如:
Query query = session.createQuery("from Customer c where c.birthday=:birthday");
query.setParameter("birthday",birthday,Hibernate.DATE);
(3)setProperties()方法:用于把命名参数与一个对象的属性值绑定,如:
Customer customer = new Customer();
customer.setName("Tom");
customer.setAge(21);
Query query = session.createQuery("from Customer as c where c.name=:name and c.age="age");
query.setProperties(customer);
setProperties()调用setParameter()方法,setParameter()方法再根据Customer对象的属性的Java类型来推断Hibernate映射类型.如果命名参数为日期类型,不能通过setProperties()方法来绑定.
参数绑定对null是安全的.
分享到:
相关推荐
### Hibernate 参数配置详解 #### 一、概述 Hibernate 是一款流行的 Java 持久层框架,它通过提供一套丰富的 API 和配置选项来简化数据库访问。本文档将深入探讨 Hibernate 的核心配置参数及其功能,帮助开发者更...
**Hibernate参数配置详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了使Hibernate能更好地适应不同项目的需求,开发者可以通过配置一系列参数来调整其行为。...
SpringMVC入门参数绑定SSM整合 SpringMVC是一种基于MVC模式的Web应用程序框架,它是Spring框架的一个模块,用于开发Web项目。下面是SpringMVC入门参数绑定SSM整合的知识点总结: 一、SpringMVC概述 SpringMVC是...
hibernate.session_factory_name 参数用于 SessionFactory 创建后,将自动使用这个名字绑定到 JNDI 中。其取值为 jndi/composite/name。 7. hibernate.max_fetch_depth hibernate.max_fetch_depth 参数用于设置...
在使用Hibernate进行应用程序开发时,正确配置Hibernate参数是至关重要的,因为这些参数直接影响到性能、内存使用和事务处理等关键方面。以下是对Hibernate参数设置的详细解释: 1. **hibernate.connection.driver_...
### Hibernate的JNDI绑定分析 #### 一、概述 Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。JNDI(Java Naming and Directory Interface)则是一种广泛使用的API,...
5. **hibernate.session_factory_name**:用于在JNDI中绑定SessionFactory的名称,便于其他组件获取SessionFactory实例。 6. **hibernate.max_fetch_depth**:控制单向关联的外连接抓取深度,较高的值可能导致更多...
在构造器里面,Hibernate 会调用 `SessionFactoryObjectFactory` 的 `addInstance` 方法,并且把自身(SessionFactory 的实例)作为参数传递。 在 `addInstance` 方法中,Hibernate 会获取一个初始上下文(Initial ...
- **数组绑定**:Spring MVC支持将请求参数绑定到数组。比如,URL中的`ids[]=1&ids[]=2`会映射到`int[] ids`参数。 - **集合绑定**:同样,请求参数可以绑定到List、Set等集合类型。例如,JSON数组`["apple", ...
- `hibernate.session_factory_name`:SessionFactory创建后,用此名称绑定到JNDI。 - `hibernate.max_fetch_depth`:控制外连接抓取的深度,默认值为0表示关闭。 - `hibernate.default_batch_fetch_size`:设置...
- `hibernate.session_factory_name`:SessionFactory 创建后,可以将其绑定到 JNDI 中的指定名称。 - `hibernate.max_fetch_depth`:设置外连接抓取的深度,值为 0 表示关闭默认的外连接抓取。 - `hibernate....
这些配置会捕获Hibernate执行的SQL语句及其参数绑定,从而在控制台看到完整的、参数化的SQL。 在开发环境中,这样的配置非常有用,因为它能帮助我们理解查询行为,定位潜在的性能瓶颈,或者检查数据是否按照预期...
总的来说,Hibernate的`Criteria`、`Query`以及QBC(Query By Criteria)提供了灵活且强大的查询手段,它们不仅支持基本的单表查询,还能处理复杂的联表、分页、参数绑定和统计需求,是Java开发者进行数据库操作的...
总结来说,这个实践主要涵盖了Hibernate的Query接口的使用,包括HQL查询的编写、参数绑定以及事务管理。理解并熟练运用这些知识,对于进行基于Hibernate的数据库操作至关重要。在实际开发中,开发者需要根据业务需求...
// 设置参数绑定 query.setParameter("param1", value1); query.setParameter("param2", value2); List[]> result = query.list(); ``` 八、总结 通过XML配置SQL和FREEMARKER模板解析,Hibernate提供了实现动态SQL...
绑定参数 11.4.1.5. 分页 11.4.1.6. 可滚动遍历(Scrollable iteration) 11.4.1.7. 外置命名查询(Externalizing named queries) 11.4.2. 过滤集合 11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的...
10. **数据安全**: 在处理用户输入以构造查询时,必须防止SQL注入攻击,可以通过预编译语句(PreparedStatement)或者使用Hibernate的参数绑定机制来实现。 综上所述,"hibernate jsp 分页Demo"项目是一个教学实例...
- `hibernate.current_session_context_class`: 当前Session上下文类,可以是`thread`(线程绑定)或`jta`(Java Transaction API)。 4. **日志配置** - `hibernate.show_sql`: 如果设置为`true`,Hibernate将在...
有两种主要的参数绑定形式: - 使用问号(`?`)作为占位符,然后通过`setXXX()`方法绑定具体值。例如,按学生名及年龄查询Students对象: ```java Query query = session.createQuery("from Students s where s...
这两个接口提供了丰富的查询功能,包括参数绑定、分页、排序等。 5. **org.hibernate.annotations package** 这个包包含了各种注解,如`@Entity`、`@Table`、`@Id`、`@GeneratedValue`等,它们用于标记Java实体类...