准备工具等: eclipse3.1+MyEclipse+jdk+mysql5.0
1:创建数据库.
drop database if exists SAMPLEDB;
create database SAMPLEDB;
use SAMPLEDB;
create table CUSTOMERS (
ID bigint not null,
NAME varchar(15),
AGE int,
primary key (ID)
);
create table ORDERS (
ID bigint not null,
ORDER_NUMBER varchar(15),
PRICE double precision,
CUSTOMER_ID bigint,
primary key (ID)
);
alter table ORDERS add index IDX_CUSTOMER(CUSTOMER_ID),
add constraint FK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS (ID);
2:新建工程 名称:sample
3:创建struts框架1.2
4:创建hibernate框架,相关映射等.
5:创建一个Action,名称:test
6:创建一个JSP页面.名称:index.jsp,在页面中加入FORM,action为test.do
相关的代码如下:
在SRC下hibernate.cfg.xml
<session-factory>
<property name="myeclipse.connection.profile">conn_mysql</property>
<property name="connection.url">jdbc:mysql://localhost:3306/sampledb</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property><mapping resource="com/Customers.hbm.xml"></mapping><mapping resource="com/Orders.hbm.xml" />
</session-factory>
在SRC下com包中有:4个.JAVA文件:AbstractCustomers.java,AbstractOrders.java,Customers.java,Orders.java 2个xml文件:Customers.hbm.xml,Orders.hbm.xml,此都为创建关联时自动生成.
Customers.hbm.xml的代码:
<hibernate-mapping package="com">
<class name="Customers" table="customers">
<id name="id" column="ID" type="long">
<generator class="increment"/>
</id>
<property name="name" column="NAME" type="string" />
<property name="age" column="AGE" type="integer" />
<set name="ordersSet" inverse="true">
<key column="CUSTOMER_ID"/>
<one-to-many class="Orders"/>
</set>
</class>
</hibernate-mapping>
Orders.hbm.xml的代码:
<hibernate-mapping package="com">
<class name="Orders" table="orders">
<id name="id" column="ID" type="long">
<generator class="increment"/>
</id>
<property name="orderNumber" column="ORDER_NUMBER" type="string" />
<property name="price" column="PRICE" type="double" />
<many-to-one name="customers" column="CUSTOMER_ID" class="Customers" />
</class>
</hibernate-mapping>
在SRC下com.Hibernate包中有:SessionFactory.java 也是创建时生成的.
在com.wind.struts中有:ApplicationResources.properties配置文件.
在com.wind.struts.action中有:TestAction.java
代码:
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.0.1/xslt/JavaClass.xsl
package com.wind.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.Customers;
import com.Orders;
import com.Hibernate.SessionFactory;
/**
* MyEclipse Struts
* Creation date: 05-08-2006
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class TestAction extends Action {
// --------------------------------------------------------- Instance Variables
// --------------------------------------------------------- Methods
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws Exception
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
saveCustomersAndOrders();
return (new ActionForward("/index.jsp"));
}
public void saveCustomersAndOrders() throws Exception {
Session session = SessionFactory.currentSession();
Transaction ts = session.beginTransaction();
Customers customers = new Customers();
customers.setName("wind");
customers.setAge(new Integer(20));
session.save(customers);
for(int i=0;i<2;i++){
Orders orders=new Orders();
orders.setOrderNumber(Integer.toString(i));
orders.setPrice(new Double(10+i));
orders.setCustomers(customers);
session.save(orders);
}
ts.commit();
session.close();
SessionFactory.closeSession();
}
}
分享到:
相关推荐
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。
在处理多表关联时,Hibernate提供了多种关联类型,包括一对一(OneToOne),多对一(ManyToOne),一对多(OneToMany)和多对多(ManyToMany)。本文将详细介绍这些关联配置以及如何解决可能出现的错误。 **一对一关联...
在处理多表关联时,Hibernate提供了一种高效且灵活的方法,尤其是当涉及到中间表的情况。中间表通常用于实现多对多(Many-to-Many)的关系,比如在一个用户和角色的关系中,一个用户可以有多个角色,一个角色也可以...
总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...
标题 "Hibernate基于连接表的一对多单向关联" 涉及的是数据库对象关系映射(ORM)框架Hibernate中的一个重要概念。在Java开发中,Hibernate是广泛使用的工具,它允许开发者将Java类与数据库表进行映射,简化了数据...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
通过对HBM映射文件的理解、DAO层的连表查询实现以及查询结果的处理等几个方面进行了详细解释。在实际项目中,合理运用这些技巧可以极大地提高开发效率和代码质量。需要注意的是,在编写连表查询时要充分考虑性能问题...
本文将深入探讨Hibernate ORM中的一个关键概念——多对多双向连接表关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生等例子,都需要用到多对多的关系来描述它们之间的复杂联系。 首先...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...
**标题解析:**“hibernate多对多双向关联” 在Java编程中,Hibernate是一个流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。"多对多双向关联"是Hibernate中一种关系映射类型,涉及两...
在Hibernate中,这种关联可以是一对一、一对多、多对一或多对多的关系。例如,一个用户可以拥有多个订单,而一个订单对应一个用户,这就是典型的多对一和一对多的关联关系。 1. **一对一关联**:当两个实体类之间...
本文将深入探讨如何通过配置优化Hibernate的多表查询,以提高应用的性能。 1. **联合查询优化**: 在进行多表查询时,Hibernate默认可能会生成多个单表查询,这会导致大量的数据库往返,降低效率。通过配置`@Join...
【标题】:“Hibernate多对一关联demo” 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作。本教程将详细解释如何在Hibernate中实现多对一的关联关系,以及如何通过一个实际的示例...
在Java的持久化框架Hibernate中,多对一(ManyToOne)关联关系是一种常见的对象关系映射(ORM)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...
在Hibernate中,多对多关联通常通过中间表或关联表(association table)来实现,这个表包含两个实体的主键作为外键。以下是实现多对多关联关系的关键步骤: 1. **定义实体类**:首先,为涉及多对多关联的两个实体...
对多关系在 Hibernate 中,多对多关系通常涉及到一个中间表来存储两个实体之间的关联。以下是如何配置 Hibernate 的多对多映射关系。 1. 数据库建表 假设我们有两张表,`users` 和 `roles`,它们通过 `user_roles` ...
在上述代码中,`@ManyToMany`注解定义了多对多关联,`@JoinTable`指定了中间表的名称和连接列。`mappedBy`属性用于指定另一端的关联字段,这表示`Course`实体的`students`集合是由`Student`实体的`courses`集合维护...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联关系是一种常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联,反之亦然。本示例"Hibernate多对多关联关系demo"将深入探讨如何在实际开发中...
在Hibernate中,实现多对多关系需要通过关联表(也称为中间表或连接表)来完成。这个关联表通常包含两个外键,分别对应于两个参与关系的实体。以下是一个具体的步骤详解: 1. **定义实体类**:首先,为参与多对多...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。在本案例中,我们将深入探讨如何使用Hibernate来处理多对多的关系映射,...