北方博客 > 首页 > Hibernate的一对多关联关系例子. 日志列表 | 左邻右里 [風のJava]Hibernate的一对多关联关系例子.strutswind 发布于 2006-05-08 11:22 Tags: hibernate 准备工具等: 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:新建工程 名称:sample3:创建struts框架1.24:创建hibernate框架,相关映射等.5:创建一个Action,名称:test6:创建一个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.xslpackage 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(); }}