经过几天的调试,我终于把调试成功了我第一个
								hibernate
								,之前都是学习理论知识。由于我参考的教材后台数据库用的是
								MYSQL, 
								用
								hbm2java 
								生成
								java 
								源代码,用
								hbm2ddl 
								生成数据库实
								hbm2java
								。我觉得太麻烦了,而且现在主要数据库用的最多的是
								ORACLE,SQL SERVER
								。所以最近一段时间我用
								SQL SERVER2000+MYECLIPSE
								来构建我的
								hibernate
								程序。因为中间因为自己的大意,出现很多不该出现的问题,导致的程序调试不成功,为了让大家少走弯路,我将自己的经验完整写下来:
						
						
								开发环境:
						
						
								Sql server 2000
						
						
								Eclipse3.1.1+Myeclipse4.1.1+hibernate2.0
						
						
								
										用
										myeclipse
										建立数据库的连接
								
						
						
								依照下图打开
								myeclipse database explore
						
						
								
								
								
						
						
								新建数据连接
						
						
								
										
										
								
						
						
								进入下面页面并填写好
								NAME
						
						
								
								
						
						
								点击
								configure database drive,
								进入后,点击
								new,
								出现下图,并在
								driver template
								选择如图所示
						
						
								
								
								点击
								add jars,
								找到自己所下的
								mssql
								驱动路径
								
								
						
						
								按确定回到下图,并按图填写好其他项,
								name,password 
								为你数据库的登陆用户名和密码
						
						
								
								
						
						
								一直点击下步,完成即可。然后点击新建的连接,打开即可

						
						
								然后再数据库中建立两个表
								
										CUSTOMER . ORDER  
								
								数据库名为
								
										test

								
						
						
								
文件
				
				/
				新建
				/
				其他
				/ 
				出现以下画面
				
						
								
								
										
										
										
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
												
										
										
										
										
										
												
												
										
								
						
				
				
						点击
						web project 
						下一步后在项目名写
						test2,
						点击完成即可
						.
				
				
						完成后在
						test2
						项目点击右键
						,
						如下图
				
				
						
						
				
				
						然后进入下面页面
						,(
						记得选择
						hibernate2.1 jar library installation 
						选第二项
						,
						确保设置与下图一致
						)
				
				
						
								
										
												
												
										
								
						
				
				
						下一步
						/
						下一步
						将
						db profile 
						选择为
						MSSQL1 
						点击下一步
						如
						下图
						( class:
						如下图填写
						)

				
				
						点击完成
						.
				
				
						现在我们建立对象
						Customer.java Order.java
				
				
						文件
						/
						新建
						/
						类
						
								  
						
						在弹出的窗口中
						源文件夹为
						test2/src 
						包为
						com 
						名字为
						Customer,
						点击完成即可
						.
				
				
						建立
						Order.java
						操作一样
						.
				
				
						添加代码
						:
				
				
						
								Customer.java
						
				
				
						package com;
				
				
						
								 
						
				
				
						import java.io.Serializable;
				
				
						import org.apache.commons.lang.builder.ToStringBuilder;
				
				
						
								 
						
				
				
						
								 
						
				
				
						/** @author Hibernate CodeGenerator */
				
				
						public class Customer implements Serializable {
				
				
						
								 
						
				
				
						
								    /** identifier field */
				
				
						
								    private Long id;
				
				
						
								 
						
				
				
						
								    /** nullable persistent field */
				
				
						
								    private String name;
				
				
						
								 
						
				
				
						
								    /** full constructor */
				
				
						
								    public Customer(String name) {
				
				
						
								        this.name = name;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    /** default constructor */
				
				
						
								    public Customer() {
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public Long getId() {
				
				
						
								        return this.id;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public void setId(Long id) {
				
				
						
								        this.id = id;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public String getName() {
				
				
						
								        return this.name;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public void setName(String name) {
				
				
						
								        this.name = name;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public String toString() {
				
				
						
								        return new ToStringBuilder(this)
				
				
						
								            .append("id", getId())
				
				
						
								            .toString();
				
				
						
								    }
				
				
						
								 
						
				
				
						}
				
				
						
								 
						
				
				
						
								Order.java
						
				
				
						package com;
				
				
						
								 
						
				
				
						import java.io.Serializable;
				
				
						import org.apache.commons.lang.builder.ToStringBuilder;
				
				
						
								 
						
				
				
						
								 
						
				
				
						/** @author Hibernate CodeGenerator */
				
				
						public class Order implements Serializable {
				
				
						
								 
						
				
				
						
								    /** identifier field */
				
				
						
								    private Long id;
				
				
						
								 
						
				
				
						
								    /** nullable persistent field */
				
				
						
								    private String orderNumber;
				
				
						
								 
						
				
				
						
								    /** persistent field */
				
				
						
								    private com.Customer customer;
				
				
						
								 
						
				
				
						
								    /** full constructor */
				
				
						
								    public Order(String orderNumber,Customer customer) {
				
				
						
								        this.orderNumber = orderNumber;
				
				
						
								        this.customer = customer;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    
						
				
				
						
								    
						
				
				
						
								    /** default constructor */
				
				
						
								    public Order() {
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    /** minimal constructor */
				
				
						
								    public Order(com.Customer customer) {
				
				
						
								        this.customer = customer;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public Long getId() {
				
				
						
								        return this.id;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public void setId(Long id) {
				
				
						
								        this.id = id;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public String getOrderNumber() {
				
				
						
								        return this.orderNumber;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public void setOrderNumber(String orderNumber) {
				
				
						
								        this.orderNumber = orderNumber;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public com.Customer getCustomer() {
				
				
						
								        return this.customer;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public void setCustomer(com.Customer customer) {
				
				
						
								        this.customer = customer;
				
				
						
								    }
				
				
						
								 
						
				
				
						
								    public String toString() {
				
				
						
								        return new ToStringBuilder(this)
				
				
						
								            .append("id", getId())
				
				
						
								            .toString();
				
				
						
								    }
				
				
						
								 
						
				
				
						}
				
				
						建立两个映射文件
						Customer.hbm..xml   Order.hbm.xml
				
				
						文件
						/
						新建
						选择如下图
				
				
						
						
				
				
						选择第一个
						下一步

				
				
						在下一步中
						
						
						父文件夹为
						
								test2/src/com  
						
						文件名为
						
								Customer.hbm.xml 
						
						下一步
						
						
						选择如下图

				
				
						点击下一步
						
						
						完成
						
								
										  
								
						
				
				
						建立
						
								Order.hbm.xml
						
						方法一致
						
								.
						
				
				
						将两个
						
								xml
						
						文件修改一下
						
						
						修改部分粗体显示了
				
				
						<?xml version="1.0"?>
						
								
								
						
				
				
						<!DOCTYPE hibernate-mapping
						
								
								
						
				
				
						PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
						
								
								
						
				
				
						"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
						
								
								
						
				
				
						编辑
						
								Customer.hbm..xml   Order.hbm.xml
						
				
				
						
								
										Customer.hbm..xml   
								
						
				
				
						<?
						xml 
						version
						=
						"1.0"
						?>
						
								
								
						
				
				
						<!
						DOCTYPE 
						hibernate-mapping
						
								
								
						
				
				
						PUBLIC 
						"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
						
								
								
						
				
				
						"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
						>
						
								
								
						
				
				
						<
						hibernate-mapping 
						>
						
								
								
						
				
				
						
								 
						
				
				
						
								  
						
						<
						class 
						name
						=
						"com.Customer" 
						table
						=
						"CUSTOMER" 
						>
						
								
								
						
				
				
						
								    
						
						<
						id 
						name
						=
						"id" 
						type
						=
						"long" 
						column
						=
						"ID"
						>
						
								
								
						
				
				
						
								      
						
						<
						generator 
						class
						=
						"increment"
						/>
						
								
								
						
				
				
						
								    
						
						</
						id
						>
						
								
								
						
				
				
						
								 
						
				
				
						
								    
						
						<
						property 
						name
						=
						"name" 
						type
						=
						"string" 
						>
						
								
								
						
				
				
						
								        
						
						<
						column 
						name
						=
						"NAME" 
						length
						=
						"15" 
						/>
						
								
								
						
				
				
						
								    
						
						</
						property
						>
						
								
								
						
				
				
						
								      
						
						
								
								
						
				
				
						
								  
						
						</
						class
						>
						
								
								
						
				
				
						
								 
						
				
				
						</
						hibernate-mapping
						>
						
								
								
						
				
				
						
								
										Order.hbm.xml
								
						
				
				
						<?
						xml 
						version
						=
						"1.0"
						?>
						
								
								
						
				
				
						<!
						DOCTYPE 
						hibernate-mapping
						
								
								
						
				
				
						PUBLIC 
						"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
						
								
								
						
				
				
						"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
						>
						
								
								
						
				
				
						<
						hibernate-mapping 
						>
						
								
								
						
				
				
						
								 
						
				
				
						
								   
						
						<
						class 
						name
						=
						"com.Order" 
						table
						=
						"[ORDER]"
						>
						
								
								
						
				
				
						
								     
						
						
								
								
						
				
				
						
								      
						
						<
						id 
						name
						=
						"id" 
						type
						=
						"long" 
						column
						=
						"ID"
						>
						
								
								
						
				
				
						
								        
						
						<
						generator 
						class
						=
						"increment"
						/>
						
								
								
						
				
				
						
								      
						
						</
						id
						>
						
								
								
						
				
				
						
								   
						
						
								
								
						
				
				
						
								      
						
						<
						property 
						name
						=
						"orderNumber" 
						type
						=
						"string" 
						>
						
								
								
						
				
				
						
								        
						
						<
						column 
						name
						=
						"ORDER_NUMBER" 
						length
						=
						"15" 
						/>
						
								
								
						
				
				
						
								      
						
						</
						property
						>
						
								
								
						
				
				
						
								 
						
				
				
						
								     
						
						<
						many-to-one
						
								
								
						
				
				
						
								        
						
						name
						=
						"customer"
						
								
								
						
				
				
						
								      
								  
						
						column
						=
						"CUSTOMER_ID"
						
								
								
						
				
				
						
								        
						
						class
						=
						"com.Customer"
						
								
								
						
				
				
						
								        
						
						not-null
						=
						"true" 
						
								
								
						
				
				
						
								        
						
						cascade
						=
						"save-update"
						
								
								
						
				
				
						
								      
						
						
								
								
						
				
				
						
								     
						
						/>
						
								
								
						
				
				
						
								 
						
				
				
						<!-- mapping with cascade -->
						
								
								
						
				
				
						<!--
						
								
								
						
				
				
						
								      <many-to-one
						
								
								
						
				
				
						
								        name="customer"
						
								
								
						
				
				
						
								        column="CUSTOMER_ID"
						
								
								
						
				
				
						
								        class="mypack.Customer"
						
								
								
						
				
				
						
								        cascade="save-update"  
						
								
								
						
				
				
						
								        not-null="true" />
						
								
								
						
				
				
						
								 -->
						
								  
						
						
								
								
						
				
				
						
								 
						
				
				
						
								    
						
						</
						class
						>
						
								
								
						
				
				
						
								 
						
						
								
								
						
				
				
						</
						hibernate-mapping
						>
						
								
								
						
				
				
						
最后建立类
		
		
				BusinessService.java 
		
		
				放置
				src/com 

		
		
				
				
		
		
				
						package com;
				
		
		
				
						
								 
						
				
		
		
				
						
								 
						
				
		
		
				
						
								 
						
				
		
		
				
						//import net.sf.hibernate.*;
				
		
		
				
						import net.sf.hibernate.*;
				
		
		
				
						import net.sf.hibernate.SessionFactory;
				
		
		
				
						import net.sf.hibernate.cfg.Configuration;
				
		
		
				
						import java.util.*;
				
		
		
				
						//import net.sf.hibernate.cfg.Configuration;
				
		
		
				
						import java.util.*;
				
		
		
				
						
								 
						
				
		
		
				
						
								 
						
				
		
		
				
						
								 
						
				
		
		
				
						public class BusinessService{
				
		
		
				
						
								
										  public static SessionFactory sessionFactory;
						
				
		
		
				
						
								
										  static{
						
				
		
		
				
						
								
										     try{
						
				
		
		
				
						
								
										      // Create a configuration based on the properties file we've put
						
				
		
		
				
						
								
										       Configuration config = new Configuration();
						
				
		
		
				
						
								
										       config.addClass(Customer.class)
						
				
		
		
				
						
								
										             .addClass(Order.class);
						
				
		
		
				
						
								
										      // Get the session factory we can use for persistence
						
				
		
		
				
						
								
										      sessionFactory = config.buildSessionFactory();
						
				
		
		
				
						
								
										    }catch(Exception e){e.printStackTrace();}
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										  public List findOrdersByCustomer(Customer customer) throws Exception{
						
				
		
		
				
						
								
										    Session session = sessionFactory.openSession();
						
				
		
		
				
						
								
										    Transaction tx = null;
						
				
		
		
				
						
								
										    try {
						
				
		
		
				
						
								
										      tx = session.beginTransaction();
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										      List orders=(List)session.find("from Order as o where o.customer.id="+customer.getId());
						
				
		
		
				
						
								
										      tx.commit();
						
				
		
		
				
						
								
										      return orders;
						
				
		
		
				
						
								
										    }catch (Exception e) {
						
				
		
		
				
						
								
										      if (tx != null) {
						
				
		
		
				
						
								
										        tx.rollback();
						
				
		
		
				
						
								
										      }
						
				
		
		
				
						
								
										      throw e;
						
				
		
		
				
						
								
										    } finally {
						
				
		
		
				
						
								
										      session.close();
						
				
		
		
				
						
								
										    }
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										  public Customer findCustomer(long customer_id) throws Exception{
						
				
		
		
				
						
								
										    Session session = sessionFactory.openSession();
						
				
		
		
				
						
								
										    Transaction tx = null;
						
				
		
		
				
						
								
										    try {
						
				
		
		
				
						
								
										      tx = session.beginTransaction();
						
				
		
		
				
						
								
										      Customer customer=(Customer)session.load(Customer.class,new Long(customer_id));
						
				
		
		
				
						
								
										      tx.commit();
						
				
		
		
				
						
								
										      return customer;
						
				
		
		
				
						
								
										    }catch (Exception e) {
						
				
		
		
				
						
								
										      if (tx != null) {
						
				
		
		
				
						
								
										        // Something went wrong; discard all partial changes
						
				
		
		
				
						
								
										        tx.rollback();
						
				
		
		
				
						
								
										      }
						
				
		
		
				
						
								
										      throw e;
						
				
		
		
				
						
								
										    } finally {
						
				
		
		
				
						
								
										      // No matter what, close the session
						
				
		
		
				
						
								
										      session.close();
						
				
		
		
				
						
								
										   
										 }
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										  public void saveCustomerAndOrderWithCascade() throws Exception{
						
				
		
		
				
						
								
										    Session session = sessionFactory.openSession();
						
				
		
		
				
						
								
										    Transaction tx = null;
						
				
		
		
				
						
								
										    try {
						
				
		
		
				
						
								
										      tx = session.beginTransaction();
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										      Customer customer=new Customer("Jack");
						
				
		
		
				
						
								
										      Order order1=new Order("Jack_Order001",customer);
						
				
		
		
				
						
								
										      Order order2=new Order("Jack_Order002",customer);
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										      session.save(order1);
						
				
		
		
				
						
								
										      session.save(order2);
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										      tx.commit();
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										    }catch (Exception e) {
						
				
		
		
				
						
								
										      if (tx != null) {
						
				
		
		
				
						
								
										        tx.rollback();
						
				
		
		
				
						
								
										      }
						
				
		
		
				
						
								
										      e.printStackTrace();
						
				
		
		
				
						
								
										    } finally {
						
				
		
		
				
						
								
										      // No matter what, close the session
						
				
		
		
				
						
								
										      session.close();
						
				
		
		
				
						
								
										    }
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										  public void saveCustomerAndOrder() throws Exception{
						
				
		
		
				
						
								
										  
										    
										  // Ask for a session using the JDBC information we've configured
						
				
		
		
				
						
								  
						
				
		
		
				
						
								
										       
										 
								
						
				
		
		
				
						
								
										  Session session = sessionFactory.openSession();
						
				
		
		
				
						
								
										       
										   Transaction tx = null;
						
				
		
		
				
						
								
										       
										   try {
						
				
		
		
				
						
								
										      tx = session.beginTransaction();
						
				
		
		
				
						
								      
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										       Customer customer=new Customer("Tom");
						
				
		
		
				
						
								
										       
										   session.save(customer);
						
				
		
		
				
						
								
										       
										 
								
						
				
		
		
				
						
								
										    Order order1=new Order("Tom_Order001",customer);
						
				
		
		
				
						
								
										     Order order2=new Order("Tom_Order002",customer);
						
				
		
		
				
						
								
										    session.save(order1);
						
				
		
		
				
						
								
										     session.save(order2);
						
				
		
		
				
						
								
										      // We're done; make our changes permanent
						
				
		
		
				
						
								
										      tx.commit();
						
				
		
		
				
						
								
										       
										   /*      
						
				
		
		
				
						*/
				
		
		
				
						
								
										    }catch (Exception e) {
						
				
		
		
				
						
								
										     if (tx != null) {
						
				
		
		
				
						
								
										        // Something went wrong; discard all partial changes
						
				
		
		
				
						
								
										     tx.rollback();
						
				
		
		
				
						
								
										      }
						
				
		
		
				
						
								
										      throw e;
						
				
		
		
				
						
								   
						
				
		
		
				
						
								
										    } finally {
						
				
		
		
				
						
								
										  // No matter what, close the session
						
				
		
		
				
						
								
										      session.close();
						
				
		
		
				
						
								
								
						
				 
		
				
						
								
										    }
						
				
		
		
				
						
								    
						
				
		
		
				
						
								  
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										  public void printOrders(List orders){
						
				
		
		
				
						
								
										      for (Iterator it = orders.iterator(); it.hasNext();) {
						
				
		
		
				
						
								
										         Order order=(Order)it.next();
						
				
		
		
				
						
								
										         System.out.println("OrderNumber of "+order.getCustomer().getName()+ " :"+order.getOrderNumber());
						
				
		
		
				
						
								
										      }
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										   public void test() throws Exception{
						
				
		
		
				
						
								
										      //saveCustomerAndOrder();
						
				
		
		
				
						
								
										     // saveCustomerAndOrderWithCascade();
						
				
		
		
				
						
								
										      Customer customer=findCustomer(1);
						
				
		
		
				
						
								
										      List orders=findOrdersByCustomer(customer);
						
				
		
		
				
						
								
										     printOrders(orders);
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						
								 
						
				
		
		
				
						
								
										  public static void main(String args[]) throws Exception {
						
				
		
		
				
						
								
										    new BusinessService().test();
						
				
		
		
				
						
								
										    sessionFactory.close();
						
				
		
		
				
						
								
										  }
						
				
		
		
				
						}
				
		
		
				
						运行
						
								: BusinessService.java 
						
				
		
		
				
						
								在文件
								
										BusinessService.java
								
						
						
								点击右建
								
										
										
								
						
				
		
		
				
						
						
				
		
		
				
						
								运行过程如下
						
						
								
								
						
				
		
		
				
				
				
				
		
		
				
						查看数据库
						
								就可看到数据库中添加了相关记录


						
				
		
		
				因为我也是初学
				如果还有什么问题
				可以和我联系
				一起学习
		
		
				我的
				QQ397125569