- 浏览: 182632 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (117)
- java基础知识 (17)
- 技术积攒 (9)
- Oracle技术 (4)
- JSP技术 (6)
- Spring技术 (15)
- Linux技术 (6)
- Hibernate技术 (24)
- JPA技术 (1)
- Struts技术 (1)
- Struts2技术 (6)
- javascript知识 (4)
- myeclipse 使用技巧 (3)
- JavaEE技术 (2)
- JSTL (1)
- javamail技术 (1)
- jaf 技术 (1)
- 测试方法 (1)
- web技术积攒 (1)
- tomcat事项 (5)
- mysql使用 (1)
- 趣味题目 (2)
- 技术词汇 (1)
- EJB3.0 (2)
- weblogic 使用说明 (1)
- CSS (1)
最新评论
-
chenhao_java:
知识点五:依赖注入-自动装配依赖对象 -
黑白配:
为什么没有看见三个附件呢?
JavaMail jsp发送邮件 html格式 -
chunchong:
真晕,这样怎么能行呢
JAVA中防止SQL注入攻击类的源代码 -
Rod_johnson:
学习了!真不错
Hibernate:类继承的实现方式(二)--父子类各自一个表 -
erchong2011:
恩 很不错 学习了 简单
jsp页面自动跳转方式
Hibernate中一对一关联两种处理方式之一:参照表主键参照被参照表主键
POJO对象
被参照对象
public class Person {
private Integer id;
private String name;
private IdCart idCart;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCart getIdCart() {
return idCart;
}
public void setIdCart(IdCart cart) {
idCart = cart;
}
}
参照对象
映射文件:
测试代码:
注意:不管是否利用关联访问被参照对象,还是参照对象的信息,都会两个表联合查询,输出的sql语句如下:
既是先访问那个对象也一样:
POJO对象
被参照对象
public class Person {
private Integer id;
private String name;
private IdCart idCart;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCart getIdCart() {
return idCart;
}
public void setIdCart(IdCart cart) {
idCart = cart;
}
}
参照对象
public class IdCart { private Integer id; private String userFullTime; private Person person; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserFullTime() { return userFullTime; } public void setUserFullTime(String userFullTime) { this.userFullTime = userFullTime; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } }
映射文件:
<?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 package="cn.itcast.hibernate.domain"> <class name="Person"> <id name="id"> <generator class="native" /> </id> <property name="name"/> <one-to-one name="idCart"/> </class> </hibernate-mapping>
<?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 package="cn.itcast.hibernate.domain"> <class name="IdCart" table="cart"> <id name="id" unsaved-value="-1"> <generator class="foreign"> <param name="property">person</param> </generator> </id> <property name="userFullTime"/> <one-to-one name="person" constrained="true"/> </class> </hibernate-mapping>
测试代码:
public class OneToOneTest { public static void main(String[] args) { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Person person = new Person(); person.setName("张三"); IdCart iCart = new IdCart(); iCart.setUserFullTime("29年"); iCart.setPerson(person); person.setIdCart(iCart); session.save(person); session.save(iCart); Person person1 = (Person)session.get(Person.class, 1); System.out.println(person1.getName()); //IdCart idCart = person1.getIdCart(); //System.out.println(idCart.getUserFullTime()); tx.commit(); } }
注意:不管是否利用关联访问被参照对象,还是参照对象的信息,都会两个表联合查询,输出的sql语句如下:
既是先访问那个对象也一样:
IdCart idCart = (IdCart)session.get(IdCart.class, 2); System.out.println(idCart.getUserFullTime()); Person person2 = idCart.getPerson(); System.out.println(person2.getName());
Hibernate: select person0_.id as id2_1_, person0_.name as name2_1_, idcart1_.id as id3_0_, idcart1_.userFullTime as userFull2_3_0_ from Person person0_ left outer join cart idcart1_ on person0_.id=idcart1_.id where person0_.id=?code] 只是一条查询语句,左外连接{一对一和多对一及一对多查询不同!!!}既是没有输出及没有调用p.getIdCard()也是做外连接!!!!!!!!但是如果只是查询从从表的对象那只是一个简单的查询!!!!!!!!发表评论
-
关于Hibernate一个配置参数hibernate.hbm2ddl.auto
2010-03-02 08:43 1132<?xml version="1.0" ... -
Hibernate 复合主键
2009-09-25 09:13 1552[zt]hibernate复合主键 key words:hi ... -
映射文件class元素的dymanic-insert和dymanic-update的作用
2009-06-05 09:36 892SQL update语句是预先生成的,如果加上dynamic的 ... -
hibernate的各种保存方式的区别
2009-06-05 08:59 644hibernate的保存 hibernate对于对象的保存提供 ... -
Hibernate:缓存设置
2009-06-04 16:38 996缓存是介于应用程序 ... -
one-to-many的懒加载及原理分析
2009-06-04 14:42 887如果是一对多,多对一,甚至是多对多那效率就差别大了!!如果一对 ... -
one-to-one的懒加载及原理分析
2009-06-04 13:57 993Lazy=”” :告诉hibernate什么时候抓取 1 fa ... -
load方法的懒加载及原理分析
2009-06-04 11:09 1793懒加载: load方法与get ... -
Hibernate:类继承的实现方式(四)--每个具体类映射一张独立表
2009-06-04 10:58 995这种方式会把继承链的所有类保持到数据库中单独的表中,而且标语表 ... -
Hibernate:类继承的实现方式(三)--鉴别器与内连接相结合
2009-06-04 10:49 1094当子类中有的有很多自己特有的属性,而部分子类有较少的自己的属性 ... -
Hibernate:类继承的实现方式(二)--父子类各自一个表
2009-06-04 10:41 1364将继承链中的各个类映射到数据库中的一个单独的表中 domai ... -
Hibernate:类继承的实现方式(一)--父子类在同一个表中
2009-06-04 10:19 1874Hibernate对继承关系的对象的处理分为多种形式: 第一 ... -
cascade和inverse
2009-06-04 09:10 1332Cascade与inverse这两个属性都用于一对多或者多对多 ... -
关联关系的级联操作
2009-06-03 17:17 836Cascade和inverse (Employee-Depar ... -
POJO对象与映射文件 : 集合映射
2009-06-03 15:36 1228集合属性大致有两种:第一种是单纯的集合属性,如像 List、S ... -
关联关系的总结
2009-06-03 14:50 747查询的时候出现sql语句的条数: Hibernate查询输出 ... -
将一个对象(组件)作为属性,但是不想建立这个表
2009-06-03 14:38 797如果对象的某个属性为一个对象,而且不想单独对该对象建立一个表, ... -
Hibernate:多对多
2009-06-03 14:10 1038Hibernate处理多对多的情况,在操作和性能方面都不太理想 ... -
Hibernate:一对一(2)
2009-06-03 11:11 781Hibernate处理一对一的另外一种方式是:将多对一加上唯一 ... -
Hibernate:多对一
2009-06-03 11:05 889Hibernate对多对一有两种,分为单向和双向。一般都是采用 ...
相关推荐
测试实现的功能: 一对一新增 一对多新增 多对多新增 多对多删除 乐观锁 一级缓存,二级缓存,读写并发 query 查询一级缓存 Criteria--基于条件查询 dao 实现测试
hibernate框架一对一测试案例,第四篇,使用于新手
hibernate一对一的关系hibernate一对一的关系hibernate一对一的关系hibernate一对一的关系hibernate一对一的关系hibernate一对一的关系
Hibernate一对一,一对多,多对多实例
Hibernate双向一对一关联映射(注解版)
Hibernate学习:单向多对一关联 工程
hibernate一对一实例
个人的很详细的Hibernate一对一映射配置详解,对初学者有帮助!
Hibernate关于注解的一对多,多对多,一对一案例。。。。
hibernate一对一外键关系,很适合入门者学习.
免积分的资源,希望可以帮到大家,这是我学习hibernate时候,自己写的代码。希望大家学业有成。
用Hibernate实现数据库表的一对一,一对多,多对多设置,以及向数据库添加数据
hibernate主键实现一对一单向关联关系源码
16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch属性为“join”) 16.4.2 延迟检索(lazy属性为默认值“proxy”) 16.4.3 无代理延迟检索(lazy属性为“no-proxy”) 16.4.4 立即检索...
hibernate外键实现一对一单向关联关系源码
hibernate one to one一对一关系示例,包括数据库备份文件。
本章介绍一对多关联关系的映射方法,重点介绍inverse属性和cascade属性的用法。本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以...
Hibernate是一个开放源代码的对象关系映射框架,它对 JDBC进行了非常轻量级的对象封装,它将POJO类与数据库表建立映射关系,是一个全自动的ORM框架,hibernate可以自动生成SQL语句,自动执行。Hibernate可以应用在...
hibernate外键实现一对一双向关联关系源码