当前位置:首页 > Web开发 > 正文

students0_.studentno as studentn1_1_1_

2024-03-31 Web开发

1、类级别盘问:

get要领和load要领:

(1)get要领:

public static void testSel() { Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); Student student=session.get(Student.class,201811); System.out.println(student); transaction.commit(); session.close(); }

特点:执行get要领时,当即发送盘问语句盘问功效。

(2)load要领(延迟加载,即:只有在使用的时候才会进行盘问):

public static void testSel() { Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); Student student=session.load(Student.class,201811); System.out.println(student); transaction.commit(); session.close(); }

特点:在执行load要领时,不会发送任何sql语句,不会孕育产生任何盘问功效,但是会孕育产生一个东西,在使用该东西时才会孕育产生盘问功效。

延迟加载与配置文件的关系:

延迟加载(默认):

<class name="Student" table="student" lazy="true">

不延迟加载:

<class name="Student" table="student" lazy="false">

延迟加载可以提高效率(东西取出来可以不用,到真正需要的时候才进行盘问)。

2、关联级别延迟加载和抓取计谋:

调集级另外关联:

lazy属性:决定是否延迟加载 true(默认值):延迟加载,懒惰加载 false:当即加载 extra:极其懒惰 fetch属性:决定加载计谋,,使用什么类型的sql语句加载调集数据 select(默认值):单表盘问加载 join:多表盘问加载调集 subselect:使用子盘问加载调集

(1)lazy=true,fetch=select

public static void testSel() { Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); Student student=session.load(Student.class,201811);//不执行盘问 Clas clas= student.getaClas(); System.out.println(clas);//执行盘问 transaction.commit(); session.close(); }

<hibernate-mapping package="pers.zhb.domain"> <class name="Clas" table="class"> <id name="classno" column="classno"> <generator class="native"></generator> </id><!--主键--> <property name="department" column="department"></property> <property name="monitor" column="monitor"></property> <property name="classname" column="classname"></property> <set name="students" table="student" lazy="true" fetch="select"><!--一对多关系配置--> <key column="classno" update="false" ></key><!--指定了调集表的外键--> <one-to-many class="Student"></one-to-many> </set> </class> </hibernate-mapping>

技术图片

表中的数据:

class表:

技术图片

student表:

(2)lazy=false,fetch=select

public static void testSel() { Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); Student student=session.load(Student.class,201811);//没有使用即开始执行盘问 Clas clas= student.getaClas(); System.out.println(clas); transaction.commit(); session.close(); }

技术图片

技术图片

(3)lazy=extra,fetch=select

极其懒惰与懒加载几乎一致。

技术图片

技术图片

获取盘问功效的size:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31743.html