`

hibernate 之1:N 配置方法

阅读更多

Role.java

package com.hw.dao;

import java.io.Serializable;

import java.util.Set;

public class Role implements Serializable {

private int rid ;

private String name;

private Set<Users> users;

//get set 方法

}

 

Role.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="com.hw.dao">

<class name="Role" table="ROLE">

<id name="rid">

<column name="RID"></column>

</id>

<property name="name">

<column name="NAME"></column>

</property>

<set name="users" cascade="all">

<key>

<column name="RID"></column>

</key>

<one-to-many class="Users"/>

</set>

</class>

</hibernate-mapping>   

 

Users.java

import java.io.Serializable;

public class Users implements Serializable{

 

private int id;

private String username;

private String password;

private Role role; //★

//get set 方法

}

 

Users.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="com.hw.dao">

<class name="Users" >

<id name="id">

<column name="ID"></column>

</id>

<property name="username">

<column name="USERNAME"></column>

</property>

<property name="password">

<column name="PASSWORD"></column>

</property>

 

<many-to-one name="role" class="Role" >

<column name="RID"></column>

</many-to-one>

</class>

</hibernate-mapping>

测试类

public class test {

public static void main(String[] args) {

Configuration cf = new Configuration().configure();

SessionFactory sf=cf.buildSessionFactory();

Session s=sf.openSession();

/**

s.beginTransaction();

Role role= new Role();

role.setRid(1);

role.setName("admins");

Set<Users> set= new HashSet<Users>();

Users user= new Users();

user.setId(1);

user.setUsername("jack");

user.setPassword("123");

set.add(user);

Users user1= new Users();

user1.setId(2);

user1.setUsername("jacks");

user1.setPassword("456");

set.add(user1);

role.setUsers(set);

s.save(role);

s.getTransaction().commit();*/

/**

String hql="from Role";

Query query=s.createQuery(hql);

List<Role> list=query.list();

for (Role role : list) {

System.out.println(role.getRid()+ " "+role.getName());

Set<Users> set =role.getUsers();

for (Users user : set) {

System.out.println(user.getId()+" "+user.getUsername()+" "+ user.getPassword()+" "+user.getRole().getRid());

}

}*/

String hql="from Users";

Query query= s.createQuery(hql);

List<Users> list=query.list();

for (Users user : list) {

System.out.println(user.getId()+" "+ user.getUsername()+" "+ user.getPassword() +" "+ user.getRole().getRid()+" "+ user.getRole().getName());

}

}

}

分享到:
评论
1 楼 lsf_demo 2011-02-27  
基础性的东西,当复习了

相关推荐

    Hibernate part 14:查询及数据库并发事务

    10. **最佳实践**:包括合理设计实体关系、避免N+1查询、使用批处理等,都是提升并发性能的关键。 通过深入学习这些概念和技巧,开发者能更好地利用Hibernate进行高效、安全的数据库操作,并在并发环境下确保数据的...

    Hibernate教程24_Hibernate的1+N问题

    - 懒加载(Lazy Loading):默认情况下,Hibernate对1:N或N:1关联使用懒加载策略。这意味着主对象被加载时,其关联的对象不会立即加载,而是在第一次访问关联对象时才发起数据库查询。 - 急加载(Eager Loading)...

    hibernate N+1问题解决办法

    **标题:“Hibernate N+1问题解决办法”** 在Java开发中,使用Hibernate作为ORM框架时,我们可能会遇到一个性能上的问题,那就是著名的“N+1查询问题”。此问题源于不恰当的数据加载策略,可能导致数据库查询效率...

    hibernate-release-5.3.18.Final.tgz

    - 合理设计实体关系,避免N+1查询问题。 - 优化查询,减少无谓的数据库访问。 10. **集成Spring**: Hibernate与Spring框架集成,可以使用Spring的事务管理,进一步简化代码,提高代码的可维护性。 综上,...

    hibernateORM1-n映射

    在"hibernateORM1-n映射"这个主题中,我们将深入探讨Hibernate中的一对多(1:N)映射关系。 在关系数据库中,一对多关系是指一个表中的记录可以对应另一个表中的多个记录。在Hibernate中,这种关系可以通过配置XML...

    Hibernate part 8:一对多关联关系映射

    同时,注意避免N+1查询问题,即在获取父实体时因懒加载引发的大量额外查询,可以通过预加载(eager fetching)或使用JOIN查询来解决。 在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括...

    day36 08-Hibernate抓取策略:批量抓取

    通过合理配置和使用这些策略,我们可以避免N+1查询问题,优化查询效率,同时保持代码的简洁性和可维护性。在实际项目开发中,根据业务需求选择合适的抓取策略,能够大大提高系统的响应速度和用户体验。

    hibernate数据包

    Hibernate是Java世界中最流行的ORM框架之一,由Jboss公司维护。它提供了一种在Java应用中持久化对象到关系数据库的方法。通过使用Hibernate,开发者可以将数据库操作抽象为对象操作,降低了业务逻辑与数据访问层...

    day36 06-Hibernate抓取策略:set集合上的抓取策略

    针对set集合,我们可以配置Hibernate的`&lt;fetch&gt;`元素,如`&lt;set fetch="batch"&gt;`。通过设置属性`batch-size`,可以定义每次加载多少个关联对象。批量加载能有效减少数据库交互次数,提高效率。 3. Subselect ...

    hibernate 源码直接导入Eclipse

    - Configuration:配置对象,负责读取Hibernate配置文件(hibernate.cfg.xml),设置连接信息等。 - SessionFactory:会话工厂,根据Configuration对象生成,是线程安全的,用于创建Session实例。 - Session:...

    .hibernate 框架介绍

    Hibernate支持1:1、1:n、n:m等多种关联映射关系,可以有效地管理复杂的数据关系。 在Hibernate框架中,ORM模型简化了数据库查询的过程,开发者可以利用ORM框架提供的查询接口,以对象的方式操作数据,而无需深入...

    Hibernate方法的实现

    本篇将深入探讨Hibernate方法的实现,包括其基本概念、配置、实体类、会话工厂以及各种操作数据库的方法。 1. **Hibernate基础** Hibernate是基于Java的持久层框架,通过XML配置文件或注解来定义对象与数据库表...

    hibernate利用配置文件反向生成数据库所有配置文件及方法

    - 考虑懒加载和级联操作的设置,避免N+1查询问题。 - 对于复杂业务逻辑,可以在实体类中加入逻辑删除、版本控制等特性。 总的来说,Hibernate的反向工程是提升开发效率的有效手段,它能帮助我们快速地构建基于现有...

    struts_hibernate整合

    1. **配置环境**:确保已经安装了JDK、Tomcat服务器、Eclipse或其他IDE,并导入Struts2和Hibernate的相关库。还需要一个数据库连接驱动,例如MySQL、Oracle等。 2. **创建数据库模型**:定义实体类,使用Hibernate...

    Hibernate配置

    **标题:“Hibernate配置”** **概述:** Hibernate是一款强大的Java持久化框架,它简化了数据库与应用程序之间的交互,使得开发者可以更加专注于业务逻辑而非数据库操作。这篇博客文章可能详细介绍了如何在Java...

    妙解HIBERNATE 3.X:叩响面向对象思想之门

    5. 支持复杂查询:Hibernate支持一对多、多对一、一对一和多对多等各种关联关系的处理,以及懒加载、立即加载等策略,有效解决了对象关系映射中的N+1查询问题。 6. 第二级缓存:为了提高性能,Hibernate提供了二级...

    hibernate 1对n例子

    总结来说,"hibernate 1对n例子"主要展示了如何在Hibernate中配置和使用一对多关联,包括在实体类中定义注解,以及在操作数据时如何利用这些关联关系。这不仅涉及了数据库设计的基本概念,也涵盖了Hibernate的核心...

    hibernate-3.2(1)hibernate-3.2(1)

    《Hibernate 3.2(1):持久化框架的核心与应用》 Hibernate 3.2(1) 是一个历史悠久但仍然具有广泛影响力的Java对象关系映射(ORM)框架的版本,它极大地简化了数据库操作,使得开发人员可以更加专注于业务逻辑,而...

Global site tag (gtag.js) - Google Analytics