开发框架 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
&