【8.1】注解方式:单向多对一映射
1.Book类
package cn.siggy.pojo; import java.util.Date; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; //entity表示需要持久化的实体类 @Entity //实体类 所对应的表 @Table(name="t_book") public class Book { //id主键 @Id //指定 主键生成策略 @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String name; private double price; private String author; private Date pubDate; @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="category_id") private Category category; /*get/set*/ }
2.Category类
package cn.siggy.pojo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table public class Category { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String name; /*get/set*/ }
3.Hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--数据库信息 --> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="connection.url">jdbc:mysql:///hibernate4</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!--hibernate可选项 --> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <!-- hbm文件 --> <mapping class="cn.siggy.pojo.Book" /> <mapping class="cn.siggy.pojo.Category" /> </session-factory> </hibernate-configuration>
4.测试代码
package cn.siggy.test; import java.util.Date; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.Test; import cn.siggy.pojo.Book; import cn.siggy.pojo.Category; import cn.siggy.util.HibernateUtil; public class HibernateTest { @Test public void testCreateDB(){ //3.x //Configuration cfg = new AnnotationConfiguration().configure(); Configuration cfg = new Configuration().configure(); SchemaExport se = new SchemaExport(cfg); se.create(true, true); } @Test public void testSave(){ Session session = HibernateUtil.getSession(); Book book = new Book(); book.setName("丰乳肥臀"); book.setPrice(60.5); book.setAuthor("莫言"); book.setPubDate(new Date()); Category category = new Category(); category.setName("文学"); book.setCategory(category); Transaction tx = session.beginTransaction(); session.save(book); tx.commit(); HibernateUtil.closeSession(); } @Test public void testGet(){ Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Book book = (Book)session.get(Book.class, 1); System.out.println(book.getName()+"---"+book.getCategory().getName()); tx.commit(); HibernateUtil.closeSession(); } }