此文件可参考hibernate工程
主键的生成方式:
1、identity 根据底层数据库的能力,来作为主键的自增长策略;适用于 mysql、db2、sqlserver等;不适用于oracle数据库;一对多和多对一
基于xml文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><!-- 维护与数据库中的关系 --><class name="com.zhiyou100.entity.Book" table="T_book"><id name="id" column="id" type="int"><generator class="identity"></generator></id><!-- many-to-one:多对一 name:一方属性名 column:外键名 class: 一方的实体类 --><property name="name" column="name" type="string"></property><many-to-one name="student" column="sid"class="com.zhiyou100.entity.Student"/></class></hibernate-mapping><hibernate-mapping><!-- 维护与数据库中的关系 --><class name="com.zhiyou100.entity.Student" table="T_student"><id name="id" column="id" type="int"><generator class="identity" /><!-- <generator class="increment" /> --></id><property name="name" column="name" type="string"></property><property name="age" column="age" type="int"></property><!-- 声明外键为sid --><set name="books"><key column="sid"></key><!-- one-to-many:多对一 class: 多方的实体类 --><one-to-many class="com.zhiyou100.entity.Book"/></set></class></hibernate-mapping>
测试类
//one-to-many@Testpublic void testOne2Many() {Session session = openSession();Student student = (Student) session.get(Student.class,3);System.out.println(student);Set<Book> books = student.getBooks();for (Book book : books) {System.out.println(book);}session.close();}
懒加载
//验证懒加载的原理 (get不进行懒加载,load进行懒加载)@Testpublic void testLazyload() {Session s = openSession();Student student = (Student) s.get(Student.class, 2);System.out.println("-----------------------------");System.out.println(student);s.close();}@Testpublic void testLazyload2() {Session s = openSession();Student student = (Student) s.load(Student.class, 2);System.out.println("-----------------------------");//你获取数据时它才运行SQL语句System.out.println(student);s.close();}
