Hibernate配置文件java
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/wisher_test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="current_session_context_class">thread</property> <mapping resource="Student.hbm.xml"/> <mapping resource="Category.hbm.xml"/> <mapping resource="Product.hbm.xml"/> </session-factory> </hibernate-configuration>
商品類Category與產品類Product(多個產品對應一個分類)mysql
package com.wisher.hb.bean; import java.io.Serializable; public class Category implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String name; private String description; public Category() { } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package com.wisher.hb.bean; import java.io.Serializable; public class Product implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String name; private Double price; private String description; private Category category; public Product() { } public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } }
hbm.xml配置文件sql
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="com.wisher.hb.bean"> <class name="Category" table="CATEGORY"> <id name="id" type="java.lang.Integer"> <column name="ID" precision="8" scale="0"></column> <generator class="increment"></generator> </id> <property name="name" type="java.lang.String"> <column name="NAME" length="40"></column> </property> <property name="description" type="java.lang.String"> <column name="DESCRIPTION" length="200"></column> </property> </class> </hibernate-mapping> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="com.wisher.hb.bean"> <class name="Product" table="PRODUCT"> <id name="id" type="java.lang.Integer"> <column name="ID" precision="8" scale="0"></column> <generator class="increment"></generator> </id> <property name="name" type="java.lang.String"> <column name="NAME" length="200"></column> </property> <property name="price" type="java.lang.Double"> <column name="PRICE" precision="8"></column> </property> <property name="description" type="java.lang.String"> <column name="DESCRIPTION" length="2000"></column> </property> <many-to-one name="category" class="Category"> <column name="CATEGORY_ID" precision="8" scale="0"></column> </many-to-one> </class> </hibernate-mapping>
數據庫腳本數據庫
DROP TABLE CATEGORY; CREATE TABLE CATEGORY ( ID INTEGER(8) NOT NULL PRIMARY KEY, NAME VARCHAR(40) NOT NULL, DESCRIPTION VARCHAR(200) ); DROP TABLE PRODUCT; CREATE TABLE PRODUCT ( ID INTEGER(8) NOT NULL PRIMARY KEY, NAME VARCHAR(200) NOT NULL, PRICE DOUBLE(8,2) NOT NULL, DESCRIPTION VARCHAR(2000), CATEGORY_ID INT(8), FOREIGN KEY (CATEGORY_ID) REFERENCES CATEGORY(ID) )
測試類session
package com.wisher.hb.test; import org.hibernate.Session; import org.hibernate.Transaction; import com.wisher.hb.bean.Category; import com.wisher.hb.bean.Product; import com.wisher.hb.util.HibernateSessionFactoryUtil; public class ManyToOneTest { public void addCategory(Category c) { Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); session.save(c); tx.commit(); } public void addProduct(Product p) { Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); session.save(p); tx.commit(); } public void printProduct(Product p) { System.out.println("編號:" + p.getId()); System.out.println("名稱:" + p.getName()); System.out.println("價格:" + p.getPrice()); System.out.println("描述:" + p.getDescription()); System.out.println("分類:" + p.getCategory().getName()); } public static void main(String[] args) { ManyToOneTest test = new ManyToOneTest(); System.out.println("************增長一種分類****************"); Category c = new Category(); c.setName("Java圖書"); c.setDescription("屬於此分類的書都是與Java開發相關的書籍"); test.addCategory(c); System.out.println("************增長分類結束****************"); System.out.println("************增長分類中的書籍****************"); Product p1 = new Product(); p1.setName("瘋狂Java講義"); p1.setPrice(new Double(56.00)); p1.setDescription("這是李剛編寫的一本書"); p1.setCategory(c); test.addProduct(p1); Product p2 = new Product(); p2.setName("Java開發與實戰"); p2.setPrice(new Double(67.00)); p2.setDescription("這是一本關於Java開發的書"); p2.setCategory(c); test.addProduct(p2); System.out.println("************增長書籍完畢****************"); Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); Product p3 = (Product) session.get(Product.class, new Integer(1)); test.printProduct(p3); tx.commit(); HibernateSessionFactoryUtil.getSessionFactory().close(); } }
工具類app
package com.wisher.hb.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateSessionFactoryUtil { private static final SessionFactory sessionFactory; static { try { sessionFactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable e) { throw new ExceptionInInitializerError(e); } } private HibernateSessionFactoryUtil() { } public static SessionFactory getSessionFactory() { return sessionFactory; } }