hibernate3.0實(shí)例 建議是有一點(diǎn)點(diǎn)是一點(diǎn)點(diǎn)基礎(chǔ)的人又沒(méi)有hibernate基礎(chǔ)和經(jīng)驗(yàn)的人比較適合(所謂一點(diǎn)點(diǎn)基礎(chǔ)是最起碼不要我介紹一些配置文件的什么的.).注意我用的JDBC驅(qū)動(dòng)com.inet.tds.TdsDriver 要是感覺(jué)注釋太少,或者是在調(diào)試的過(guò)程中出現(xiàn)BUG或者是什么的,請(qǐng)回貼,我會(huì)答復(fù)你. 大家一起努力學(xué)習(xí)吧. 1、建立PO對(duì)象 建PO對(duì)象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已經(jīng)建立完成,下面是一個(gè)測(cè)試類 /* * 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,下面是一個(gè)hibernate的配置hibernate.cfg.xml(位于應(yīng)用目錄下面) <!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 </property> </session-factory> </hibernate-configuration> 另外還需要配置一個(gè)LOG文件log4j.properties (位于應(yīng)用目錄下面) 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 |
聯(lián)系客服