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());
}
}
}
分享到:
相关推荐
10. **最佳实践**:包括合理设计实体关系、避免N+1查询、使用批处理等,都是提升并发性能的关键。 通过深入学习这些概念和技巧,开发者能更好地利用Hibernate进行高效、安全的数据库操作,并在并发环境下确保数据的...
- 懒加载(Lazy Loading):默认情况下,Hibernate对1:N或N:1关联使用懒加载策略。这意味着主对象被加载时,其关联的对象不会立即加载,而是在第一次访问关联对象时才发起数据库查询。 - 急加载(Eager Loading)...
**标题:“Hibernate N+1问题解决办法”** 在Java开发中,使用Hibernate作为ORM框架时,我们可能会遇到一个性能上的问题,那就是著名的“N+1查询问题”。此问题源于不恰当的数据加载策略,可能导致数据库查询效率...
- 合理设计实体关系,避免N+1查询问题。 - 优化查询,减少无谓的数据库访问。 10. **集成Spring**: Hibernate与Spring框架集成,可以使用Spring的事务管理,进一步简化代码,提高代码的可维护性。 综上,...
在"hibernateORM1-n映射"这个主题中,我们将深入探讨Hibernate中的一对多(1:N)映射关系。 在关系数据库中,一对多关系是指一个表中的记录可以对应另一个表中的多个记录。在Hibernate中,这种关系可以通过配置XML...
同时,注意避免N+1查询问题,即在获取父实体时因懒加载引发的大量额外查询,可以通过预加载(eager fetching)或使用JOIN查询来解决。 在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括...
通过合理配置和使用这些策略,我们可以避免N+1查询问题,优化查询效率,同时保持代码的简洁性和可维护性。在实际项目开发中,根据业务需求选择合适的抓取策略,能够大大提高系统的响应速度和用户体验。
Hibernate是Java世界中最流行的ORM框架之一,由Jboss公司维护。它提供了一种在Java应用中持久化对象到关系数据库的方法。通过使用Hibernate,开发者可以将数据库操作抽象为对象操作,降低了业务逻辑与数据访问层...
针对set集合,我们可以配置Hibernate的`<fetch>`元素,如`<set fetch="batch">`。通过设置属性`batch-size`,可以定义每次加载多少个关联对象。批量加载能有效减少数据库交互次数,提高效率。 3. Subselect ...
- Configuration:配置对象,负责读取Hibernate配置文件(hibernate.cfg.xml),设置连接信息等。 - SessionFactory:会话工厂,根据Configuration对象生成,是线程安全的,用于创建Session实例。 - Session:...
Hibernate支持1:1、1:n、n:m等多种关联映射关系,可以有效地管理复杂的数据关系。 在Hibernate框架中,ORM模型简化了数据库查询的过程,开发者可以利用ORM框架提供的查询接口,以对象的方式操作数据,而无需深入...
本篇将深入探讨Hibernate方法的实现,包括其基本概念、配置、实体类、会话工厂以及各种操作数据库的方法。 1. **Hibernate基础** Hibernate是基于Java的持久层框架,通过XML配置文件或注解来定义对象与数据库表...
- 考虑懒加载和级联操作的设置,避免N+1查询问题。 - 对于复杂业务逻辑,可以在实体类中加入逻辑删除、版本控制等特性。 总的来说,Hibernate的反向工程是提升开发效率的有效手段,它能帮助我们快速地构建基于现有...
1. **配置环境**:确保已经安装了JDK、Tomcat服务器、Eclipse或其他IDE,并导入Struts2和Hibernate的相关库。还需要一个数据库连接驱动,例如MySQL、Oracle等。 2. **创建数据库模型**:定义实体类,使用Hibernate...
**标题:“Hibernate配置”** **概述:** Hibernate是一款强大的Java持久化框架,它简化了数据库与应用程序之间的交互,使得开发者可以更加专注于业务逻辑而非数据库操作。这篇博客文章可能详细介绍了如何在Java...
5. 支持复杂查询:Hibernate支持一对多、多对一、一对一和多对多等各种关联关系的处理,以及懒加载、立即加载等策略,有效解决了对象关系映射中的N+1查询问题。 6. 第二级缓存:为了提高性能,Hibernate提供了二级...
总结来说,"hibernate 1对n例子"主要展示了如何在Hibernate中配置和使用一对多关联,包括在实体类中定义注解,以及在操作数据时如何利用这些关联关系。这不仅涉及了数据库设计的基本概念,也涵盖了Hibernate的核心...
《Hibernate 3.2(1):持久化框架的核心与应用》 Hibernate 3.2(1) 是一个历史悠久但仍然具有广泛影响力的Java对象关系映射(ORM)框架的版本,它极大地简化了数据库操作,使得开发人员可以更加专注于业务逻辑,而...