- 浏览: 188183 次
- 性别:
- 来自: 青岛
-
文章分类
- 全部博客 (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页面自动跳转方式
如果是一对多,多对一,甚至是多对多那效率就差别大了!!如果一对多lazy=”false”或者fetch=”join”会同时查询出所有关联的对象,对数据库和对网络影响将是很大地。(lazy=”false” 采用多条查询语句,比如,一对100:会有可能101条select查询语句;fetch=”join” 会同时访问两个表的)
但是代理对象调用getClass()和getId()方法的时候不会立刻加载,.class和id的信息是随对象的!
domain对象
映射文件
测试代码:
此时的sql语句为:
如果映射文件改为:
sql语句为:
如果映射文件为:
只是访问一个表了:
但是代理对象调用getClass()和getId()方法的时候不会立刻加载,.class和id的信息是随对象的!
domain对象
public class User { private Integer id; private String name; private Float wage; private Set<Book> bookSet = new HashSet<Book>();
public class Book { private Integer id; private String bookname; private User user;
映射文件
<?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.lazyOneToOne"> <class name="User" table="user" lazy="false"> <id name="id" unsaved-value="-1"> <generator class="native" /> </id> <property name="name" /> <property name="wage"/> <set name="bookSet" lazy="false" fetch="select"> <key column="u_id"/> <one-to-many class="Book"/> </set> </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.lazyOneToOne"> <class name="Book" table="book"> <id name="id" unsaved-value="-1"> <generator class="native" /> </id> <property name="bookname" /> <many-to-one name="user" column="u_id"/> </class> </hibernate-mapping>
测试代码:
User user = (User)session.get(User.class, 1);
此时的sql语句为:
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.wage as wage0_0_ from user user0_ where user0_.id=? Hibernate: select bookset0_.u_id as u3_1_, bookset0_.id as id1_, bookset0_.id as id1_0_, bookset0_.bookname as bookname1_0_, bookset0_.u_id as u3_1_0_ from book bookset0_ where bookset0_.u_id=?
如果映射文件改为:
<set name="bookSet" lazy="false" fetch="join"> <key column="u_id"/> <one-to-many class="Book"/> </set>
sql语句为:
Hibernate: select user0_.id as id0_1_, user0_.name as name0_1_, user0_.wage as wage0_1_, bookset1_.u_id as u3_3_, bookset1_.id as id3_, bookset1_.id as id1_0_, bookset1_.bookname as bookname1_0_, bookset1_.u_id as u3_1_0_ from user user0_ left outer join book bookset1_ on user0_.id=bookset1_.u_id where user0_.id=?
如果映射文件为:
<set name="bookSet" lazy="true"> <key column="u_id"/> <one-to-many class="Book"/> </set>
只是访问一个表了:
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.wage as wage0_0_ from user user0_ where user0_.id=?
发表评论
-
关于Hibernate一个配置参数hibernate.hbm2ddl.auto
2010-03-02 08:43 1170<?xml version="1.0" ... -
Hibernate 复合主键
2009-09-25 09:13 1590[zt]hibernate复合主键 key words:hi ... -
映射文件class元素的dymanic-insert和dymanic-update的作用
2009-06-05 09:36 945SQL update语句是预先生成的,如果加上dynamic的 ... -
hibernate的各种保存方式的区别
2009-06-05 08:59 692hibernate的保存 hibernate对于对象的保存提供 ... -
Hibernate:缓存设置
2009-06-04 16:38 1043缓存是介于应用程序 ... -
one-to-one的懒加载及原理分析
2009-06-04 13:57 1053Lazy=”” :告诉hibernate什么时候抓取 1 fa ... -
load方法的懒加载及原理分析
2009-06-04 11:09 1842懒加载: load方法与get ... -
Hibernate:类继承的实现方式(四)--每个具体类映射一张独立表
2009-06-04 10:58 1047这种方式会把继承链的所有类保持到数据库中单独的表中,而且标语表 ... -
Hibernate:类继承的实现方式(三)--鉴别器与内连接相结合
2009-06-04 10:49 1137当子类中有的有很多自己特有的属性,而部分子类有较少的自己的属性 ... -
Hibernate:类继承的实现方式(二)--父子类各自一个表
2009-06-04 10:41 1418将继承链中的各个类映射到数据库中的一个单独的表中 domai ... -
Hibernate:类继承的实现方式(一)--父子类在同一个表中
2009-06-04 10:19 1929Hibernate对继承关系的对象的处理分为多种形式: 第一 ... -
cascade和inverse
2009-06-04 09:10 1398Cascade与inverse这两个属性都用于一对多或者多对多 ... -
关联关系的级联操作
2009-06-03 17:17 880Cascade和inverse (Employee-Depar ... -
POJO对象与映射文件 : 集合映射
2009-06-03 15:36 1264集合属性大致有两种:第一种是单纯的集合属性,如像 List、S ... -
关联关系的总结
2009-06-03 14:50 805查询的时候出现sql语句的条数: Hibernate查询输出 ... -
将一个对象(组件)作为属性,但是不想建立这个表
2009-06-03 14:38 846如果对象的某个属性为一个对象,而且不想单独对该对象建立一个表, ... -
Hibernate:多对多
2009-06-03 14:10 1078Hibernate处理多对多的情况,在操作和性能方面都不太理想 ... -
Hibernate:一对一(2)
2009-06-03 11:11 817Hibernate处理一对一的另外一种方式是:将多对一加上唯一 ... -
Hibernate:多对一
2009-06-03 11:05 923Hibernate对多对一有两种,分为单向和双向。一般都是采用 ... -
Hibernate:一对一(1)
2009-06-03 10:40 834Hibernate中一对一关联两种处理方式之一:参照表主键参照 ...
相关推荐
"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...
同时,可能会讲解级联操作、懒加载与立即加载策略、集合映射(例如List、Set、Map等)以及One-to-One、One-to-Many、Many-to-Many等关系映射的实现。 第三篇可能涉及到Hibernate的缓存机制,包括一级缓存和二级缓存...
2. Hibernate中可以通过many-to-one、one-to-many、many-to-many等配置文件实现类之间的关系。 3. Hibernate的工作原理主要包括读取并解析配置文件、读取并解析映射信息、创立SessionFactory、翻开Session、创立事务...
- 对于单端关联(`<many-to-one>`, `<one-to-one>`),可以使用`fetch`属性控制加载方式,如`fetch="join"`会在同一SQL语句中使用内连接获取关联数据,`fetch="select"`则使用延迟加载。 - 集合属性上的抓取策略...
在数据库中,一对多(One-to-Many)和多对多(Many-to-Many)关系非常常见。例如,一个用户可以有多个订单,而一个订单也可以属于多个用户。在Hibernate中,我们使用集合(如List、Set、Map等)来表示这种关系。通过...
- **6.2.5 一对多关联 (One-to-many Associations)**:讲解一对多关联的映射。 - **6.3 高级集合映射 (Advanced collection mappings)** - **6.3.1 有序集合 (Sorted collections)**:解释有序集合的使用方法。 -...
ORM的具体实现涉及多种映射策略,例如一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。这些策略的选择取决于具体的应用场景和需求。 #### 持久化操作 Hibernate...
- **一对一(One-to-One)**、**一对多(One-to-Many)**、**多对一(Many-to-One)**、**多对多(Many-to-Many)**:不同的关系类型有不同的映射策略。 #### 四、常用配置与注解 - **hibernate.cfg.xml**:...
这些关系可以通过配置文件中的`<one-to-one>`、`<one-to-many>`、`<many-to-many>`标签来定义。 **具体步骤:** 1. **一对一关系:** 可以通过`<one-to-one>`标签在配置文件中定义两个类之间的关系,也可以通过注解...
11. **多对一(One-to-Many)、一对多(Many-to-One)、多对多(Many-to-Many)关系映射** Hibernate 支持多种关联关系的映射,如实体之间的引用,通过`@OneToMany`, `@ManyToOne`, `@ManyToMany` 注解来定义。 12...
类间关系的实现主要依赖于配置文件中的关联声明,如`many-to-one`、`one-to-many`、`many-to-many`等,通过这些声明,Hibernate能够正确处理不同类之间的关联关系。 ### Hibernate的缓存机制 Hibernate的缓存分为...
例如,元素用于定义主键,元素表示普通字段,<one-to-one>、<many-to-one>等元素用于处理关联关系。 五、对象持久化 Hibernate提供了一套API,包括Session、Transaction等接口,用于实现对象的持久化操作。Session...
- **一对多映射 (One-to-Many):** 表示一个实体类对应多个其他实体类。 - **多对多映射 (Many-to-Many):** 表示两个实体类之间是多对多的关系。 **2. Hibernate2 与 Hibernate3 的映射类型差异:** - **Hibernate2...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。...通过对"hibernate-one2many"的分析,我们可以深入研究和实践一对一和一对多关联关系的配置和操作。
- **Mapping one-to-one and one-to-many associations**:一对一和一对多关联的映射方法。 - **自然ID(Natural-ID)**:自然ID的概念及其在Hibernate中的应用。 - **Any**:特殊映射类型,用于处理非标准数据类型...
- 一对多(One-to-Many)、多对一(Many-to-One)、多对多(Many-to-Many)关系的映射,使得对象之间的关系可以直接在C++代码中体现。 5. **性能优化** - ORM库可能会包含缓存机制,以减少不必要的数据库访问,...
通过深入分析`sequelize-poc-源码`,我们可以了解到Sequelize的工作原理、模型定义、数据操作、关联关系、事务处理以及延迟加载等核心功能。理解并熟练掌握这些知识,将有助于我们在实际项目中高效地使用Sequelize,...
- **注解方式配置**:使用`@Many`和`@One`注解来声明多对多关系。例如,`@Many(targetField = "students", fetchType = FetchType.LAZY)`表示一个班级有多个学生。 3. **关联映射的实现原理** Mybatis在处理多对...
<one-to-many class="com.example.Order" /> ``` 或者使用注解: ```java @Entity public class User { @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) @org.hibernate.annotations.OrderBy("id ...
10. **一对多(One-to-Many)、多对一(Many-to-One)、多对多(Many-to-Many)关系映射**:Hibernate支持各种关联关系的映射,使得对象间的复杂关系可以轻松地在数据库中表达。 这些项目可能涉及上述知识点的实际...