`
persistC
  • 浏览: 73525 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate 七

阅读更多
                                    
一、集合映射
1、set映射
  关联对象的属性除了外键之外,只有1、2个属性,那么就可以使用set映射
  使用了set标签的element元素,不用创建关联对象就可以实现单向一对多的关联关系
  public class Room implements Serializable{
    private int id;
    private String roomNumber;
    private Set<String> equipments = new HashSet<String>();
    private Set<Image> images = new HashSet<Image>();
  }
  
    <set name="equipments" table="equipment_set">
      <key column="roomid" foreign-key="fk_equip_room_set"/>
      <element column="description" type="string" length="128" not-null="true"/>
    </set>
    <set name="images" table="image_set">
      <key column="roomid" foreign-key="fk_img_room_set"/>
      <composite-element class="Image">
        <property name="path" column="path" type="string" length="50" not-null="true"/>
        <property name="width" column="width" type="integer" />
        <property name="height" column="height" type="integer" />
      </composite-element>   
2、map映射
  非常有用的一种集合映射
  public class Room implements Serializable{
    private int id;
    private String roomNumber;
    private Map<String, String> equipments = new HashMap<String, String>();
    private Map<String, Image> images = new HashMap<String, Image>();
  }
 
    <map name="equipments" table="equipment_map">
      <key column="roomid" foreign-key="fk_equip_room_map"/>
      <map-key column="name" type="string" length="15" />
      <element column="description" type="string" length="128" not-null="true"/>
    </map>
    <map name="images" table="image_map">
      <key column="roomid" foreign-key="fk_img_room_map"/>
      <map-key column="name" type="string" length="15" />
      <composite-element class="Image">
        <property name="path" column="path" type="string" length="50" not-null="true"/>
        <property name="width" column="width" type="integer" />
        <property name="height" column="height" type="integer" />
      </composite-element>
    </map>

二、HQL
1、query
  (1) session.createQuery("from User");                   
      session.createCriteria(User.class);
  
  (2)查询的分页显示
   query.setFirstResult(0);
   query.setMaxResult(10);
    (a) MySql
      select * from student where limite ?,?
    (b) Oracle
      select * from (select row_.* ,rownum rownum_
                  from (select student0_.id as id0_,
                        from student student0_) row)
      where rownum_ <= ?
      and rownum_ > ?                       
  
   (3)在配置文件中的query
   <query name="findByName">
       <![CDATA[      ---  当作字符串看,不做特殊处理
           from User u where u.namelike :name
          
       ]]>   
   </query>
                           
   session.getNamedQuery("findByName").setString("name",name);
  
   from User;   返回对象数组,不可以强转
   select u from User u;  返回对象集合,对于集合中的每个元素都可以强转成User对象
  
2、Dynamic query
   public Collection findStudents(Student student){
         StringBuffer sb = new StringBuffer("select student from Student student where student.id>-1 ");
                                             --- student.id>-1 永远为真,再添加条件的时候都用and即可,避免判断用where还是and
         if(student.getName() != null)
             sb.append("and student.name=:name");
         if(student.getBirthday() != null)
             sb.append("and student.birthday=:birthday");
         if(student.getEmail() != null)
             sb.append("and student.email=:email"); 
         ……                        
   }  
  
3、QBE
   属性多时,效率高,语句少
   忽略主键、version、关系(查询当前对象) 
   与QBC结合,弥补id查询
   Example.excludeProperty("param");  --- 查询时忽略某个属性
  
分享到:
评论

相关推荐

    hibernate七种映射

    便于同学们更好的学习hibernate,其中包含了hibernate的七种映射管、关系

    hibernate学习资料大全

    7. **一对多、多对一、多对多关联映射**: Hibernate 支持各种关联映射,如一对一、一对多、多对一和多对多。理解这些关联关系的建立和查询,能够帮助开发者设计出更灵活的数据模型。 8. **缓存机制**: ...

    hibernate基础jar包

    7. HQL和Criteria API:Hibernate Query Language(HQL)是Hibernate特有的面向对象的查询语言,类似于SQL,但操作的是对象而非表格。Criteria API是一种类型安全的API,可以动态构建查询,避免SQL注入风险。 8. ...

    hibernate3.zip 包含hibernate3.jar

    7. **缓存机制**:Hibernate包含一级缓存(Session缓存)和二级缓存(可选)。一级缓存是每个`Session`内部的,自动管理对象的状态。二级缓存则是在多个`Session`间共享的,可以提高数据读取效率,但需谨慎使用以...

    hibernate aip hibernate aip

    7. **性能优化**:包括延迟加载(Lazy Loading)、批处理(Batch Processing)、缓存策略调整等,这些都可以提升Hibernate应用的性能。 8. **查询优化**:避免N+1查询问题,使用JOIN fetch提前加载关联数据,使用...

    hibernate和MySQL的jar

    7. **JDBC驱动**: MySQL的JDBC驱动(如mysql-connector-java.jar)是连接Hibernate与MySQL数据库的关键。它提供了Java应用程序与MySQL服务器通信的桥梁。 8. **事务管理**: Hibernate支持事务管理,可以使用`...

    struts+sping+hibernate7

    struts+sping+hibernate qq群72861940

    hibernate annotation hibernate3

    七、缓存注解 1. `@Cacheable` 表示实体类或特定方法的结果可以被缓存。 2. `@Cache` 定义缓存配置,包括区域、策略等。 八、总结 Hibernate 3中的注解机制使得开发者能够更直观地在Java类中描述数据库模型,...

    hibernate3必要jar包

    7. **事务管理**:Hibernate支持JTA(Java Transaction API)和JDBC事务,可以方便地进行事务控制。 8. **实体生命周期**:Hibernate管理实体的生命周期,包括瞬时态、持久态、托管态和脱管态,以及相应的转换过程...

    Hibernate3的依赖包

    7. **类型转换和用户类型**:Hibernate支持基本数据类型的自动转换,同时也允许自定义复杂类型的映射。 8. **关联映射**:Hibernate支持一对一、一对多、多对一、多对多等各种关联关系的映射,方便地处理复杂的...

    hibernate-3.2源代码

    七、事件监听器 Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前或后进行自定义处理。 八、持久化操作 - 保存(save()):为新对象生成ID并将其放入一级缓存...

    hibernate第一个hibernate

    7. 第一个Hibernate程序: 创建一个简单的Java应用,初始化`SessionFactory`,打开`Session`,创建一个`User`对象并保存到数据库,最后关闭`Session`。这将演示基本的Hibernate操作流程。 8. 事务管理: ...

    hibernate的jar包

    7. **第二级缓存**:Hibernate支持二级缓存,通过插件如Ehcache,可以在多个Session之间共享数据,提高性能。 8. **延迟加载(Lazy Loading)**:Hibernate支持懒加载机制,只有当真正需要访问关联对象时,才会发起...

    Hibernate 中文api 等学习资料

    7. **实体生命周期**:了解Hibernate如何处理对象的创建、更新、删除等状态变化。 8. **性能调优**:包括批处理、连接池配置、查询优化等方面的知识。 9. **拦截器和事件监听器**:学习如何自定义行为,比如在对象...

    hibernate 3.6 中文 chm

    7. **事务管理**:在数据库操作中,事务的正确管理是保证数据一致性的关键。Hibernate支持JTA(Java Transaction API)和JPA(Java Persistence API)的事务管理策略。 8. **缓存机制**:Hibernate提供了一级缓存...

    hibernate5相关jar包

    7. 持久化元数据:`.hbm.xml`或@Entity注解 Hibernate使用持久化元数据来定义Java类和数据库表之间的映射关系。这可以通过XML文件(`.hbm.xml`)或JPA的@Entity注解来实现。 在实际开发中,你需要根据项目需求选择...

    hibernate5.2.9

    7. ** Criteria API**:除了HQL,Hibernate还提供了Criteria API,这是一种更动态的查询方式,可以在运行时构建查询条件。 8. **级联操作**:通过在实体类的属性上设置级联注解,可以控制一个对象的保存、删除等...

    Hibernate框架jia包

    7. **性能优化**: - 第二级缓存:通过引入缓存插件如Ehcache,提高数据访问效率。 - 批量操作:利用批处理更新或删除,减少数据库交互次数。 -延迟加载(Lazy Loading):只在需要时加载关联对象,避免数据冗余...

    hibernate-release-5.2.10

    7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)关系的映射,方便处理对象间的关联关系。 8. **延迟加载**:Hibernate的懒加载策略可以在需要时才...

    hibernate必要的jar包

    7. **jta.jar**(或者包含JTA实现的库,如geronimo-jta_1_1_spec.jar):Java Transaction API用于处理分布式事务,是Hibernate支持分布式环境中的事务管理所必需的。 8. **cglib-nodep.jar**或**asm.jar**:这两个...

Global site tag (gtag.js) - Google Analytics