建议是有一点点是一点点基础的人又没有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 &
|