package cn.phping.one2one_fk_2;
public class Passport_fk_2 {
private int id;
private String serial;
private int expiry;
private Person_fk_2 person_fk_2 ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSerial() {
return serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
public int getExpiry() {
return expiry;
}
public void setExpiry(int expiry) {
this.expiry = expiry;
}
public Person_fk_2 getPerson_fk_2() {
return person_fk_2;
}
public void setPerson_fk_2(Person_fk_2 person_fk_2) {
this.person_fk_2 = person_fk_2;
}
}
package cn.phping.one2one_fk_2;
public class Person_fk_2 {
private int id;
private String name;
private Passport_fk_2 passport_fk_2;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Passport_fk_2 getPassport_fk_2() {
return passport_fk_2;
}
public void setPassport_fk_2(Passport_fk_2 passport_fk_2) {
this.passport_fk_2 = passport_fk_2;
}
}
<?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">
<hibernate-mapping >
<class name="cn.phping.one2one_fk_2.Passport_fk_2">
<id name="id">
<generator class="native">
</generator>
</id>
<property name="serial" />
<property name="expiry" />
<one-to-one name="person_fk_2" class="cn.phping.one2one_fk_2.Person_fk_2"
property-ref="passport_fk_2"></one-to-one>
</class>
</hibernate-mapping>
<?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">
<hibernate-mapping>
<class name="cn.phping.one2one_fk_2.Person_fk_2">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String"/>
<many-to-one name="passport_fk_2"
unique="true"></many-to-one>
</class>
</hibernate-mapping>
以上是两个POJO类,以及两个映射文件,两者关系是基于唯一外键的一对一关系,然后我写了测试类 用junit测试
package cn.phping.one2one_fk_2;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.hibernate.Session;
import cn.phping.junit.HibernateUtils;
public class Testone2one_fk_2 extends TestCase {
Session session = null;
@Override
protected void setUp() throws Exception {
session = HibernateUtils.currentSession();
}
@Override
protected void tearDown() throws Exception {
HibernateUtils.closeSession();
}
public void testSaveone2one_fk_2() {
session.beginTransaction();
Person_fk_2 person_fk_2 = new Person_fk_2();
person_fk_2.setName("wuxuping");
Passport_fk_2 passport_fk_2 = new Passport_fk_2();
passport_fk_2.setSerial("2203222222222");
passport_fk_2.setExpiry(25);
passport_fk_2.setPerson_fk_2(person_fk_2);
session.save(passport_fk_2);
session.getTransaction().commit();
}
public void testGetDatas(){
session.beginTransaction();
List list = session.createQuery("from Passport_fk_2 p ").list();
}
}
当我测试testGetDatas()方法时,测试的结果如下,当我数据库里有5条Passport_fk_2 hibernate执行了5条相同的语句,当我有100条时,也就有100条相同的sql 。不知道为什么,不知道小弟那里设置有错误
请高手们帮帮我,小弟不胜感激!!!!
Hibernate: select passport_f0_.id as id8_, passport_f0_.serial as serial8_, passport_f0_.expiry as expiry8_ from Passport_fk_2 passport_f0_
Hibernate: select person_fk_0_.id as id9_0_, person_fk_0_.name as name9_0_, person_fk_0_.passport_fk_2 as passport3_9_0_ from Person_fk_2 person_fk_0_ where person_fk_0_.passport_fk_2=?
Hibernate: select person_fk_0_.id as id9_0_, person_fk_0_.name as name9_0_, person_fk_0_.passport_fk_2 as passport3_9_0_ from Person_fk_2 person_fk_0_ where person_fk_0_.passport_fk_2=?
Hibernate: select person_fk_0_.id as id9_0_, person_fk_0_.name as name9_0_, person_fk_0_.passport_fk_2 as passport3_9_0_ from Person_fk_2 person_fk_0_ where person_fk_0_.passport_fk_2=?
Hibernate: select person_fk_0_.id as id9_0_, person_fk_0_.name as name9_0_, person_fk_0_.passport_fk_2 as passport3_9_0_ from Person_fk_2 person_fk_0_ where person_fk_0_.passport_fk_2=?
Hibernate: select person_fk_0_.id as id9_0_, person_fk_0_.name as name9_0_, person_fk_0_.passport_fk_2 as passport3_9_0_ from Person_fk_2 person_fk_0_ where person_fk_0_.passport_fk_2=?
分享到:
相关推荐
为什么需要执行原生 SQL 语句 在实际开发中,我们可能需要执行一些复杂的 SQL 查询,或者使用数据库特有的函数和语句,而这些操作在 HQL 中不支持。此时,我们需要使用原生 SQL 语句来实现这些操作。 使用 ...
本篇文章将详细介绍在Hibernate中执行原生SQL的几种方式,以及它们各自的适用场景和优缺点。 1. **使用`Session.createSQLQuery()`** Hibernate的`Session`接口提供了`createSQLQuery()`方法,允许我们直接编写SQL...
#### 一、为什么要使用原生SQL? 虽然HQL是Hibernate提供的面向对象的语言,能够方便地映射到Java对象,但在某些场景下使用原生SQL更加灵活高效,例如: - **复杂查询**:当需要执行复杂的数据库操作时,如分组、...
本篇将深入探讨如何在Hibernate中调用配置文件中的SQL语句,以此提高代码的可维护性和灵活性。 首先,理解Hibernate的核心概念至关重要。Hibernate是一个对象关系映射(ORM)框架,它将Java对象与关系数据库中的...
当设置为 true 时,Hibernate 将输出所有 SQL 语句到控制台,方便开发者调试和优化数据库操作。 3. hibernate.format_sql hibernate.format_sql 参数用于在 log 和 console 中打印出更漂亮的 SQL。其取值为 true ...
模仿Hibernate生成SQL语句,我们可以从以下几个方面入手: 1. **实体类(Entity)与表映射**:Hibernate通过`@Entity`注解定义一个Java类为数据库中的表,`@Table`注解指定对应的表名。实体类的属性对应表中的列,`...
标题“hibernate执行外部sql”指的是使用Hibernate框架执行存储在外部文件中的SQL语句。通常,Hibernate以其对象关系映射(ORM)能力著称,允许开发者通过Java对象来操作数据库,但有时我们仍需直接执行SQL,特别是...
P6Spy是一个开源的JDBC代理库,它允许我们监控并记录应用通过JDBC执行的所有数据库操作,包括那些由Hibernate生成的SQL语句。它不仅可以提供完整的SQL语句,还能够提供执行时间、性能指标等详细信息,这对于优化...
本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...
这些配置会捕获Hibernate执行的SQL语句及其参数绑定,从而在控制台看到完整的、参数化的SQL。 在开发环境中,这样的配置非常有用,因为它能帮助我们理解查询行为,定位潜在的性能瓶颈,或者检查数据是否按照预期...
4. **启用Hibernate SQL日志**:在Hibernate的配置中,你需要开启SQL语句的日志输出,通常是通过设置`hibernate.show_sql`和`hibernate.format_sql`属性为`true`。 5. **测试和分析**:一旦配置完成,运行你的应用...
为了提高效率并使SQL语句更易于理解和分析,格式化SQL语句显得尤为重要。标题提及的"Java打印漂亮的SQL语句(被格式化的SQL语句)"就是一种解决方案,它利用特定的工具或库将原本杂乱无章的SQL转换为结构清晰、简洁易...
当我们需要执行一些特殊的、复杂的或者非标准的SQL查询时, Hibernate的本地SQL查询功能就显得尤为实用。本文将深入探讨如何使用Hibernate将本地SQL查询的结果封装成对象。 首先,本地SQL查询(Native SQL)是指...
XDoclet是早期的一个工具,用于自动生成Hibernate的映射文件(.hbm.xml)和SQL语句,这样开发者无需手动编写这些文件,提高了开发效率。这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了...
4. **调试与日志**: 可以开启Hibernate的SQL日志,观察实际执行的SQL语句,帮助调试和优化查询。 综上所述,通过Myeclipse和Hibernate的结合,开发者可以高效地进行数据库操作,无需关心底层SQL细节,专注于业务...
4. 示例代码或项目:可能包含了一些使用Spring和Hibernate的示例程序,展示如何在实际开发中整合这两个框架,以及如何编写和执行SQL语句。 学习并掌握Spring Framework、经典SQL语句和Hibernate,对于Java开发人员...
在Java编程中,与MySQL数据库交互通常涉及到使用SQL语句来执行CRUD(创建、读取、更新、删除)操作。然而,为了提高代码的可维护性和安全性,开发者可以选择使用ORM(对象关系映射)框架,如Hibernate或MyBatis,...
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
SQL Server 2005的JDBC驱动程序(sqljdbc.jar)允许Java应用程序连接到SQL Server数据库,执行SQL语句,以及管理数据库连接。 在提供的压缩包中,"jakarta-struts-1%5B1%5D.1-src.rar"包含了Struts 1.1的源代码,这...