分享

JR - 精品文章 - hibernate3.0实例

 昵称662 2005-11-01

hibernate3.0实例
建议是有一点点是一点点基础的人又没有hibernate基础和经验的人比较适合(所谓一点点基础是最起码不要我介绍一些配置文件的什么的.).注意我用的JDBC驱动com.inet.tds.TdsDriver
要是感觉注释太少,或者是在调试的过程中出现BUG或者是什么的,请回贴,我会答复你.
大家一起努力学习吧.

1、建立PO对象 
   建PO对象Customer、Order以及它们的hibernate配置文件

 /*
 * Created on 2005-10-12
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package testdemo;

import java.util.HashSet;
import java.util.Set;

/**
 * @author liuzj
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */

public class Customer {
    private int id;

    private String username;

    private String password;

    private Set orders = new HashSet();

    public Customer() {
    }

    public Customer(String username, String password, Set orders) {
        this.username = username;
        this.password = password;

        this.orders = orders;

    }

    public int getId() {
        return id;
    }

    public String getPassword() {
        return password;
    }

    public String getUsername() {
        return username;
    }

    public Set getOrders() {
        return orders;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setOrders(Set orders) {
        this.orders = orders;
    }

}


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate./hibernate-mapping-3.0.dtd">
 <hibernate-mapping>
   <class name="testdemo.Customer" table="CUSTOMER" dynamic-insert="true" dynamic-update="true">
   <id name="id" column="ID">
     <generator class="increment" />
    </id>
   <property name="username" column="USERNAME" />
   <property name="password" column="PASSWORD" />
   
       <set 
        name="orders"
        inverse="true"
        cascade="save-update"  
    >
        <key column="CUSTOMER_ID" />
        <one-to-many class="testdemo.Order" />
   </set>   
   
  </class>
 </hibernate-mapping>


/*
 * Created on 2005-10-13
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package testdemo;

/**
 * @author liuzj
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

import java.io.Serializable;
public class Order implements Serializable {

    private Long id;
    private String orderNumber;
    private double price;
    private Customer customer;

    public Order() {
    }
    public Order(String orderNumber,double price,Customer customer) {
      this.orderNumber=orderNumber;
      this.price=price;
      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 Customer getCustomer() {
        return this.customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public double getPrice(){
       return this.price;
    }
    private void setPrice( double price ){
       this.price = price;
    }
}



<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate./hibernate-mapping-3.0.dtd">

<hibernate-mapping  package="testdemo">

   <class name="Order"  table="ORDERS">
     
      <id name="id">
        <generator class="increment"/>
      </id>
   
      <property name="orderNumber" column="ORDER_NUMBER"/>
      <property name="price" />

     <many-to-one
        name="customer"
        column="CUSTOMER_ID"
        class="Customer"
        not-null="true" 
     />

   </class>
 </hibernate-mapping>


上面的PO已经建立完成,下面是一个测试类


/*
 * Created on 2005-10-12
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package testdemo;

import java.util.HashSet;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import testdemo.Customer;

/**
 * @author liuzj
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */

public class Test {

    SessionFactory sessionFactory = new Configuration().configure().addClass(
            testdemo.Customer.class).addClass(Order.class).buildSessionFactory();
    Session session = sessionFactory.openSession();
    public void saveCustomer(Customer customer) throws Exception {
        
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.save(customer);
            
            tx.commit();

        } catch (Exception e) {
            if (tx != null) {
                tx.rollback();
            }
            throw e;
        } finally {
            session.close();
        }
    }
    
    
    public void testmethod()throws Exception
    {
      Customer customer=new Customer("lzhengj","001",new HashSet());
      Order order1=new Order("Order",1000,customer);
      Order order2=new Order("Order",2000,customer);
      customer.getOrders().add(order1);
      customer.getOrders().add(order2);
      this.saveCustomer(customer);

    }

    public static void main(String[] args) {
        
        try{
         new Test().testmethod();
            
        }catch(Exception e)
        {
        System.out.println("this is the testmethod  throw exception.....");
         e.printStackTrace();    
        }

    }
}


ok,下面是一个hibernate的配置hibernate.cfg.xml(位于应用目录下面)

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate./hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
          <property name="hibernate.connection.url">
          jdbc:inetdae:localhost:1433?charset=gbk&database=hibernate_test
          </property>
          <property name="hibernate.connection.driver_class">
            com.inet.tds.TdsDriver
          </property>
          <property name="hibernate.connection.username">
            sa
          </property>
          <property name="hibernate.connection.password">
       aa
          </property>
          <property name="hibernate.dialect">
          org.hibernate.dialect.SQLServerDialect
          </property>
          <property name="show_sql">
          true
          </property>
    </session-factory>
</hibernate-configuration>

另外还需要配置一个LOG文件log4j.properties (位于应用目录下面)

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多