Hibernate逍遥游记-第7章 Hibernate的检索策略和检索方式(<set lazy="false" fetch="join">、left join fetch、FetchMode.JOIN、)
1.
<?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="mypack.Monkey" table="MONKEYS"> <id name="id" type="long" column="ID">
<generator class="increment"/>
</id> <property name="name" type="string" column="NAME" /> <many-to-one
name="team"
column="TEAM_ID"
class="mypack.Team"
lazy="proxy"
/> </class> </hibernate-mapping>
2.
package mypack;
public class Monkey{
private Long id;
private String name;
private Team team;
public Monkey(String name, Team team) {
this.name = name;
this.team = team;
}
public Monkey() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Team getTeam() {
return this.team;
}
public void setTeam(Team team) {
this.team = team;
}
}
3.
<?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="mypack.Team" table="TEAMS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id> <property name="name" type="string" column="NAME" /> <set
name="monkeys"
inverse="true"
lazy="true"> <key column="TEAM_ID" />
<one-to-many class="mypack.Monkey" />
</set> </class>
</hibernate-mapping>
4.
package mypack; import java.util.Set;
import java.util.HashSet; public class Team { private Long id;
private String name;
private Set monkeys=new HashSet(); public Team(String name, Set monkeys) {
this.name = name;
this.monkeys = monkeys;
} public Team() {
} public Team(Set monkeys) {
this.monkeys = monkeys;
} public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} public Set getMonkeys() {
return this.monkeys;
} public void setMonkeys(Set monkeys) {
this.monkeys = monkeys;
} }
5.
package mypack; import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import java.util.*; public class BusinessService{
public static SessionFactory sessionFactory;
static{
try{
// Create a configuration based on the properties file we've put
Configuration config = new Configuration();
//load hibernate.cfg.xml
config.configure();
// Get the session factory we can use for persistence
sessionFactory = config.buildSessionFactory();
}catch(RuntimeException e){e.printStackTrace();throw e;}
} public void findAllTeams(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction(); System.out.println("findAllTeams():executing session.createQuery().list()");
List teamLists=session.createQuery("from Team as m").list(); System.out.println("findAllTeams():executing teamLists.iterator()");
Iterator teamIterator=teamLists.iterator(); System.out.println("findAllTeams():iterating team1");
Team team1=(Team)teamIterator.next(); System.out.println("findAllTeams():iterating team2");
Team team2=(Team)teamIterator.next(); System.out.println("findAllTeams():iterating team3");
Team team3=(Team)teamIterator.next(); System.out.println("findAllTeams():iterating team4");
Team team4=(Team)teamIterator.next(); System.out.println("findAllTeams():executing team1.getMonkeys().iterator()");
Iterator monkeyIterator1=team1.getMonkeys().iterator(); System.out.println("findAllTeams():executing team2.getMonkeys().iterator()");
Iterator monkeyIterator2=team2.getMonkeys().iterator(); System.out.println("findAllTeams():executing team3.getMonkeys().iterator()");
Iterator monkeyIterator3=team3.getMonkeys().iterator(); System.out.println("findAllTeams():executing team4.getMonkeys().iterator()");
Iterator monkeyIterator4=team4.getMonkeys().iterator(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void loadTeam(){ Session session = sessionFactory.openSession();
Transaction tx = null;
Team team=null;
try {
tx = session.beginTransaction(); System.out.println("loadTeam():executing session.load()");
team=(Team)session.load(Team.class,new Long(1)); System.out.println("loadTeam():executing team.getName()");
team.getName(); System.out.println("loadTeam():executing team.getMonkeys().iterator()");
Iterator monkeyIterator=team.getMonkeys().iterator(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void getTeam(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
System.out.println("getTeam():executing session.get()");
Team team=(Team)session.get(Team.class,new Long(1)); System.out.println("getTeam():executing team.getName()");
team.getName(); System.out.println("getTeam():executing team.getMonkeys().iterator()");
Iterator monkeyIterator=team.getMonkeys().iterator(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void getMonkey(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
System.out.println("getMonkey():executing session.get()");
Monkey monkey=(Monkey)session.get(Monkey.class,new Long(1)); System.out.println("getMonkey():executing monkey.getName()");
monkey.getName(); System.out.println("getMonkey():executing monkey.getTeam()");
Team team=monkey.getTeam(); System.out.println("getMonkey():executing team.getName()");
team.getName(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void loadMonkey(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
System.out.println("loadMonkey():executing session.load()");
Monkey monkey=(Monkey)session.load(Monkey.class,new Long(1)); System.out.println("loadMonkey():executing monkey.getName()");
monkey.getName(); System.out.println("loadMonkey():executing monkey.getTeam()");
Team team=monkey.getTeam(); System.out.println("loadMonkey():executing team.getName()");
team.getName(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void findAllMonkeys(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction(); System.out.println("findAllMonkeys():executing session.createQuery().list()");
List monkeyLists=session.createQuery("from Monkey as m ").list(); System.out.println("findAllMonkeys():executing monkeyLists.iterator()");
Iterator monkeyIterator=monkeyLists.iterator(); System.out.println("findAllMonkeys():iterating monkey1");
Monkey monkey1=(Monkey)monkeyIterator.next(); System.out.println("findAllMonkeys():iterating monkey2");
Monkey monkey2=(Monkey)monkeyIterator.next(); System.out.println("findAllMonkeys():iterating monkey3");
Monkey monkey3=(Monkey)monkeyIterator.next(); System.out.println("findAllMonkeys():iterating monkey4");
Monkey monkey4=(Monkey)monkeyIterator.next(); System.out.println("findAllMonkeys():iterating monkey5");
Monkey monkey5=(Monkey)monkeyIterator.next(); System.out.println("findAllMonkeys():iterating monkey6");
Monkey monkey6=(Monkey)monkeyIterator.next(); System.out.println("findAllMonkeys():executing monkey1.getTeam()");
Team team1=monkey1.getTeam(); System.out.println("findAllMonkeys():executing team1.getName()");
if(team1!=null) team1.getName(); System.out.println("findAllMonkeys():executing monkey2.getTeam()");
Team team2=monkey2.getTeam(); System.out.println("findAllMonkeys():executing team2.getName()");
if(team2!=null)team2.getName(); System.out.println("findAllMonkeys():executing monkey3.getTeam()");
Team team3=monkey3.getTeam(); System.out.println("findAllMonkeys():executing team3.getName()");
if(team3!=null)team3.getName(); System.out.println("findAllMonkeys():executing monkey4.getTeam()");
Team team4=monkey4.getTeam(); System.out.println("findAllMonkeys():executing team4.getName()");
if(team4!=null)team4.getName(); System.out.println("findAllMonkeys():executing monkey5.getTeam()");
Team team5=monkey5.getTeam(); System.out.println("findAllMonkeys():executing team5.getName()");
if(team5!=null)team5.getName(); System.out.println("findAllMonkeys():executing monkey6.getTeam()");
Team team6=monkey6.getTeam(); System.out.println("findAllMonkeys():executing team6.getName()");
if(team6!=null)team6.getName(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void findTeamLeftJoinMonkey(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
System.out.println("findTeamLeftJoinMonkey():executing session.createQuery().list()");
List teamLists=session
.createQuery("from Team as t left join fetch t.monkeys where t.id=1")
.list(); System.out.println("findTeamLeftJoinMonkey():executing teamLists.iterator()");
Iterator teamIterator=teamLists.iterator(); System.out.println("findTeamLeftJoinMonkey():iterating team");
Team team=(Team)teamIterator.next(); System.out.println("findTeamLeftJoinMonkey():executing team.getMonkeys().iterator()");
Iterator monkeyIterator=team.getMonkeys().iterator(); tx.commit(); }catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} public void test(){
loadTeam();
getTeam();
findAllTeams(); loadMonkey();
getMonkey();
findAllMonkeys();
findTeamLeftJoinMonkey();
} public static void main(String args[]) throws Exception {
//new BusinessService().test();
new BusinessService().loadTeam();
sessionFactory.close();
}
}
6.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/sampledb
</property>
<property name="connection.username">
root
</property>
<property name="connection.password">
1234
</property> <property name="show_sql">true</property> <mapping resource="mypack/Team.hbm.xml" />
<mapping resource="mypack/Monkey.hbm.xml" />
</session-factory>
</hibernate-configuration>
7.




Hibernate逍遥游记-第7章 Hibernate的检索策略和检索方式(<set lazy="false" fetch="join">、left join fetch、FetchMode.JOIN、)的更多相关文章
- Hibernate逍遥游记-第9章 Hibernate的映射类型
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第5章映射一对多-01单向<many-to-one>、cascade="save-update"、lazy、TransientObjectException
1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...
- Hibernate逍遥游记-第15章处理并发问题-003乐观锁
1. 2. drop database if exists SAMPLEDB; create database SAMPLEDB; use SAMPLEDB; drop table if exists ...
- Hibernate逍遥游记-第15章处理并发问题-002悲观锁
1. 2. hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mys ...
- Hibernate逍遥游记-第13章 映射实体关联关系-006双向多对多(分解为一对多)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第13章 映射实体关联关系-005双向多对多(使用组件类集合\<composite-element>\)
1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...
- Hibernate逍遥游记-第13章 映射实体关联关系-004双向多对多(inverse="true")
1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...
- Hibernate逍遥游记-第13章 映射实体关联关系-003单向多对多
0. 1. drop database if exists SAMPLEDB; create database SAMPLEDB; use SAMPLEDB; create table MONKEYS ...
- Hibernate逍遥游记-第13章 映射实体关联关系-002用主键映射一对一(<one-to-one constrained="true">、<generator class="foreign">)
1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...
随机推荐
- PHP页面跳转代码
这年头,真是好记性不如烂笔头,学的还没有忘的快,刚才用到的页面跳转,却又记不清楚了,故特意整理了一下,用做以后参考.从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一,页面跳转可能是由于用户 ...
- URL锚点HTML定位技术机制
一.锚点是什么 锚点就等同于火影中的“飞雷神之术”,我们先看百科中锚点的解释: 使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部.然后可以创建到这些命名锚记的链接,这些链接可快 ...
- Demo学习: Basic jQuery
UniGUI是一套基于ExtJS的Delphi的WEB框架,它是使用ExtPascal来转化到ExtJS,ExtJS是一个跨浏览器的JavaScript库,因此UniGUI发布出来的程序可以在各种浏览 ...
- Nginx+uWSGI+Django原理
Python的Web开发中,如果使用Django框架,那么较为成熟稳定的服务器架构一般是Nginx+uWSGI+Django.而为什么一定要三个结合在一起呢?直接使用Django的runserver来 ...
- Barracuda VS antelope
version : 5.6.16-64.0-56-log Innodb 行存储:Innodb Plugin新引入Barracuda梭子鱼,包含Compressed和Dynamic两种行格式.而Comp ...
- IOS 基于APNS消息推送原理与实现(JAVA后台)
Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Pu ...
- quartus ii 中文注释乱码解决办法
转载自:http://bbs.ednchina.com/BLOG_ARTICLE_3027549.HTM 有些时候我们用Quartus ii 打开不同版本创建的工程文件时,往往会出现下列提示 点yes ...
- SSMS 2008R2没有智能感知方法解决
有时SSMS会莫明奇妙的没有了智能感知(前一天还是有的, 第2天就没有了) 在网上查到有如下原因: 1. 服务器上有Offline的DB 解决方案: 将Offline的DB删掉或者设成online即可 ...
- NAND的一些相关概念
chipsize:整个NAND FLASH 的大小,单位为MB pagesize:一页的大小,单位为字节Byte erasesize:最小擦除大小,单位为字节Byte NAND写操作基本单位是页, ...
- pure.css
注释中address是纠正的意思 等价于correct/*! Pure v0.5.0 Copyright 2014 Yahoo! Inc. All rights reserved. Licensed ...