開發框架hibernate3.0開發實例

建議是有一點點是一點點基礎的人又沒有hibernate基礎和經驗的人比較適合(所謂一點點基礎是最起碼不要我介紹一些配置文件的什麼的.).注意我用的JDBC驅動com.inet.tds.TdsDriver
  
  大家一起努力學習吧.
  
  建立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.sourceforge.net/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.sourceforge.net/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.sourceforge.net/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
  & 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章