传智播客Hibernate视频教程学习笔记15
2009-08-03 15:12
429 查看
多对一关系的检索:
在做查询的时候,Hibernate也会自动的填充Employee中的Department类型属性,部分测试代码如下:
test.java
教程把打印的语句写在了事务里,所以懒加载是可以的,我没有放在一个事务里,所以懒加载的时候报错,no session。
我修改了映射文件,关闭了懒加载。正常运行。关于懒加载以后教程讲了再研究吧。
Employee.hbm.xml
这样测试起来就对了,Hibernate的sql语句为:
Hibernate: insert into Department (name) values (?)
Hibernate: insert into Employee (name, dpt_id) values (?, ?)
Hibernate: select employee0_.id as id2_0_, employee0_.name as name2_0_, employee0_.dpt_id as dpt3_2_0_ from Employee employee0_ where employee0_.id=?
Hibernate: select department0_.id as id1_0_, department0_.name as name1_0_ from Department department0_ where department0_.id=?
两条insert两条select,发现其实也无非封装了一下jdbc嘛。
在做查询的时候,Hibernate也会自动的填充Employee中的Department类型属性,部分测试代码如下:
test.java
import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import domain.Department; import domain.Employee; import domain.Users; import hibernate.HibernateUtil; public class test { /** * @param args */ public static void main(String[] args) { Department dpt = new Department(); dpt.setName("department_name"); Employee epy = new Employee(); epy.setName("employee_name"); epy.setDpt(dpt); HibernateUtil.add(dpt); HibernateUtil.add(epy); epy = (Employee)HibernateUtil.get(Employee.class, 1); System.out.println(epy.getName()); System.out.println(epy.getDpt().getName()); } }
教程把打印的语句写在了事务里,所以懒加载是可以的,我没有放在一个事务里,所以懒加载的时候报错,no session。
我修改了映射文件,关闭了懒加载。正常运行。关于懒加载以后教程讲了再研究吧。
Employee.hbm.xml
<?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="domain"> <class name="Employee"> <id name="id"> <generator class="native"/> </id> <property name="name"></property> <many-to-one name="dpt" column="dpt_id" lazy="false"></many-to-one>//添加禁用懒加载 </class> </hibernate-mapping>
这样测试起来就对了,Hibernate的sql语句为:
Hibernate: insert into Department (name) values (?)
Hibernate: insert into Employee (name, dpt_id) values (?, ?)
Hibernate: select employee0_.id as id2_0_, employee0_.name as name2_0_, employee0_.dpt_id as dpt3_2_0_ from Employee employee0_ where employee0_.id=?
Hibernate: select department0_.id as id1_0_, department0_.name as name1_0_ from Department department0_ where department0_.id=?
两条insert两条select,发现其实也无非封装了一下jdbc嘛。
相关文章推荐
- 传智播客Hibernate视频教程学习笔记5
- 传智播客Hibernate视频教程学习笔记23
- 传智播客Hibernate视频教程学习笔记30
- 传智播客Hibernate视频教程学习笔记9
- 传智播客Hibernate视频教程学习笔记18
- 传智播客Hibernate视频教程学习笔记20
- 传智播客Hibernate视频教程学习笔记29
- 传智播客Hibernate视频教程学习笔记38
- 传智播客Hibernate视频教程学习笔记48
- 传智播客Hibernate视频教程学习笔记56
- 传智播客Hibernate视频教程学习笔记1
- 传智播客Hibernate视频教程学习笔记6
- 传智播客Hibernate视频教程学习笔记33
- 传智播客Hibernate视频教程学习笔记42
- 传智播客Hibernate视频教程学习笔记43
- 传智播客Hibernate视频教程学习笔记52
- 传智播客Hibernate视频教程学习笔记14
- 传智播客Hibernate视频教程学习笔记21
- 传智播客Hibernate视频教程学习笔记24
- 传智播客Hibernate视频教程学习笔记25