我们有一个Team实体,一个Student实体,他们之间的关系是1对多,Team中持有一个Student集合,如果我们不想检索出全部的student,而是希望检索符合一定条件的Student集合,可以使用HQL和Filter的方
数据库结构:
create table testStu (id varchar(32),name varchar(32),age int,team_id varchar(32));
insert into teststu values("1","tom1",11,"1");
insert into teststu values("2","tom2",12,"2");
insert into teststu values("3","tom3",13,"1");
insert into teststu values("4","tom4",14,"2");
insert into teststu values("5","tom5",15,"1");
insert into teststu values("6","tom6",16,"2");
insert into teststu values("7","tom7",17,"1");
insert into teststu values("8","tom8",18,"2");
insert into teststu values("9","tom9",19,"1");
insert into teststu values("10","tom10",20,"2");
create table testteam (id varchar(32) primary key,name varchar(32));
insert into testteam values("1","team1");
insert into testteam values("2","team2");
POJO:
package Search.filter;
public class TestStu ...{
private String id; //标识id
private String name; //学生姓名
private int age; //岁数
private TestTeam team;
public int getAge() ...{
return age;
}
public String getName() ...{
return name;
}
public void setId(String id) ...{
this.id = id;
}
public void setAge(int age) ...{
this.age = age;
}
public void setName(String stuName) ...{
this.name = stuName;
}
public String getId() ...{
return id;
}
public TestStu() ...{ //无参的构造函数
}
public TestTeam getTeam() ...{
return team;
}
public void setTeam(TestTeam team) ...{
this.team = team;
}
}
package Search.filter;
import java.util.Set;
public class TestTeam ...{
private String id;
private String name;
private Set students;
public String getId() ...{
return id;
}
public void setId(String id) ...{
this.id = id;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
public Set getStudents() ...{
return students;
}
public void setStudents(Set students) ...{
this.students = students;
}
}
Hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312&useUnicode=true
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">mysql</property>
<property name="connection.password">1234</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.show_sql">true</property>
<property name="current_session_context_class">thread</property>
<mapping resource="Search/filter/TestStu.hbm.xml" />
<mapping resource="Search/filter/TestTeam.hbm.xml" />
</session-factory>
</hibernate-configuration>
TestStu.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping package="Search.fetch" >
<class name="Search.filter.TestStu" table="teststu" lazy="true">
<id name="id" column="id" unsaved-value="null">
<generator class="uuid.hex"></generator>
</id>
<property name="name" column="name"></property>
<property name="age" column="age"></property>
<many-to-one name="team" column="team_id">
</many-to-one>
</class>
</hibernate-mapping>
TestTeam.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
分享到:
相关推荐
在探讨“hibernate过滤器使用例子”这一主题时,我们深入分析了如何在Hibernate框架中运用过滤器功能,以及如何结合分页技术优化数据查询效率。以下将详细阐述相关知识点,包括过滤器的基本概念、配置方法、源码解析...
在Hibernate 3.x中,过滤器的使用相比2.x版本有了显著的提升。可以预定义过滤器,并将其绑定到类或集合级别。预定义过滤器允许我们在映射文件中定义类似于`WHERE`子句的限制条件,这些条件与特定类和集合元素相关联...
根据提供的文件信息,我们可以推断出这段代码是关于一个用于设置请求字符编码的过滤器(Filter),主要目的是解决在Hibernate框架使用过程中遇到的中文乱码问题。下面将详细阐述与标题、描述及部分代码相关的关键...
1. **添加过滤器定义**:在`web.xml`文件中定义过滤器,指定过滤器类为`org.springframework.orm.hibernate3.support.OpenSessionInViewFilter`。 2. **初始化参数设置**: - `singleSession`: 设置为`true`表示在...
例如,在`HttpServletRequest`中使用`setCharacterEncoding()`方法,确保请求参数以正确的编码解析。 4. **过滤器链的传递**:在完成验证后,根据验证结果决定是否继续调用过滤器链中的下一个过滤器。如果用户合法...
除了标准的EJB3注解,Hibernate还提供了一些自定义注解,如`@GeneratedValue`用于设置主键生成策略,`@Formula`用于在属性中使用SQL表达式,`@Cache`用于配置缓存,`@Filter`用于动态过滤数据,以及`@Parent`用于...
17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...
除了`EncodingFilter`,在Web应用中还有其他常见的过滤器,如Struts的`TilesFilter`、Hibernate的`OpenSessionInViewFilter`和Spring的`CharacterEncodingFilter`。这些过滤器各有用途,例如`TilesFilter`用于处理...
本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...
17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...
17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...
本文将详细介绍如何通过配置`struts.properties`文件与`web.xml`中的过滤器来解决中文乱码问题。 #### 一、Struts2 配置文件(struts.properties)中的关键设置 在Struts2项目中,可以通过修改`struts.properties`...
在`web.xml`中配置该过滤器,它会在所有请求进入Servlet之前设置请求和响应的字符编码。这样可以防止请求参数中的中文字符在传递过程中发生乱码。 2. **Hibernate配置**: Hibernate的配置文件`hibernate.cfg.xml`...
在Java Web开发中,`Filter`过滤器是一个关键的安全组件,用于拦截...总的来说,`URLfilter`展示了如何使用Java过滤器来防止SQL注入攻击的一个基本思路,但在实际应用中,需要结合更全面的安全策略来提高系统的安全性。
《Hibernate实战》这本书深入浅出地探讨了Java领域中广泛使用的对象关系映射框架——Hibernate。Hibernate是一个开源的ORM框架,它为Java开发者提供了一种高效、便捷的方式来管理数据库操作,消除了Java对象与SQL...
2.4.8. 过滤器 2.4.9. 查询 3. 通过XML覆写元数据 3.1. 原则 3.1.1. 全局级别的元数据 3.1.2. 实体级别的元数据 3.1.3. 属性级别的元数据 3.1.4. 关联级别的元数据 4. Hibernate验证器 4.1. 约束 4.1.1. ...
17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching ...
2. **登录验证**:过滤器可以检查请求中的session或cookie,如果发现有效的用户信息,说明用户已登录,否则阻止其访问特定的URL。 3. **安全过滤**:为了防止SQL注入和XSS攻击,过滤器还可以对用户输入的数据进行...
本篇文章将详细探讨SSH框架中的中文乱码问题,以及如何通过实现自定义过滤器(Filter)来解决这一问题。 首先,我们要理解乱码的产生原因。在HTTP请求中,数据编码格式不一致是导致乱码的主要因素。例如,客户端...