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

多对一

 
阅读更多

datasource配置文件:

hibernate.cfg.hbm:

 

<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
 <session-factory name="jnty">
  <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/hibernate</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">root</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
       
        <mapping resource="com/jnty/bean/User.hbm.xml"/>
        <mapping resource="com/jnty/bean/Group.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

 

Group.java

package com.jnty.bean;


public class Group {
 
 private int id;
 
 private String name;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
}

<?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>
 <class name="com.jnty.bean.Group" table="t_group">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
 </class>
</hibernate-mapping>

 

package com.jnty.bean;

import java.util.Date;

public class User {

 private int id;
 
 private String name;
 
 private String password;
 
 private Date createTime;
 
 private Date expireTime;
 
 private Group group;

 public Group getGroup() {
  return group;
 }

 public void setGroup(Group group) {
  this.group = group;
 }


 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public Date getCreateTime() {
  return createTime;
 }

 public void setCreateTime(Date createTime) {
  this.createTime = createTime;
 }

 public Date getExpireTime() {
  return expireTime;
 }

 public void setExpireTime(Date expireTime) {
  this.expireTime = expireTime;
 }
 
 
}

<?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>
 <class name="com.jnty.bean.User" table="t_user">
  <id name="id">
   <!-- 主键生成策略 -->
   <generator class="native"/>
  </id>
  <property name="name" column="name"/>
  <property name="password"/>
  <property name="createTime"/>
  <property name="expireTime"/>
  <many-to-one name="group" column="group_id" cascade="all" />
 </class>
</hibernate-mapping>

 

 

生成表:

package com.jnty.util;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GenarateTable {
 
 public static void main(String args[]){
//  Configuration cfg = new Configuration();//读取默认的properties文件
  //读取hibernate.cfg.xml
  Configuration cfg = new Configuration().configure();
  SchemaExport export = new SchemaExport(cfg);
  export.create(true, true);
 }
}

基本工具类:

package com.jnty.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {

 private static SessionFactory factory;
 
 static {
  try {
   Configuration cfg = new Configuration().configure();
   factory = cfg.buildSessionFactory();
  }catch(Exception e) {
   e.printStackTrace();
  }
 }
 
 public static SessionFactory getSessionFactory() {
  return factory;
 }
 
 public static Session getSession() {
  return factory.openSession();
 }
 
 public static void closeSession(Session session) {
  if (session != null) {
   if (session.isOpen()) {
    session.close();
   }
  }
 }
}

测试例子:

package com.jnty;

import java.util.Date;

import junit.framework.TestCase;

import org.hibernate.Session;

import com.jnty.bean.Group;
import com.jnty.bean.User;
import com.jnty.util.HibernateUtils;

public class Many2OneTest extends TestCase {

 public void testSave1() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   Group group = new Group();
   group.setName("江南科技");
   
   //单独保存user也是可以的,group_id字段就为null
   User user1 = new User();
   user1.setName("��江南");
   user1.setPassword("www");
   user1.setCreateTime(new Date());
   user1.setExpireTime(new Date());
   user1.setGroup(group);
   
   session.save(user1);
   session.getTransaction().commit();
  }catch(Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally {
   HibernateUtils.closeSession(session);
  }
 } 
 
 
 
 public void testLoad1() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   User user = (User)session.load(User.class, 1);
   System.out.println("user.name=" + user.getName());
   System.out.println("user.group.name=" + user.getGroup().getName());
   
   session.getTransaction().commit();
  }catch(Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally {
   HibernateUtils.closeSession(session);
  }
 } 
 
}

 

分享到:
评论

相关推荐

    nRF24L01无线模块实现一对一、一对多、多对一收发程序

    《nRF24L01无线模块:一对一、一对多、多对一收发程序详解》 在无线通信领域,nRF24L01是一款广泛应用的2.4GHz射频收发芯片,以其低成本、低功耗和高集成度的特点受到了广泛的欢迎。本文将深入探讨如何使用nRF24L01...

    hibernate一对多,多对一,一对多双向关联

    在数据库设计中,实体间的关系通常包括一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关系,而在Hibernate这个ORM(对象关系映射)框架中,这些关系可以被映射到Java对象上,使得数据操作更加...

    hibernate多对一单向关联关系实现源码

    在Java的持久化框架Hibernate中,多对一(ManyToOne)关联关系是一种常见的对象关系映射(ORM)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...

    stm32-2.4G多对一通信

    "stm32-2.4G多对一通信"是一个关于如何利用STM32微控制器实现2.4GHz频段的多对一通信模式的项目。STM32是一款基于ARM Cortex-M内核的微控制器,由意法半导体(STMicroelectronics)生产,具有高性能、低功耗的特点,...

    ogg配置多对一复制-实际配置过程

    ogg配置多对一复制-实际配置过程 主要讲解linux下两个节点配置向同一个目标节点同步同一张表的过程

    多对一双向关联(视频)

    在Java编程语言以及许多其他面向对象的编程环境中,多对一和一对多的关联关系是数据库设计中的常见概念。这两个术语描述了实体之间的关系。在本案例中,"多对一双向关联"指的是一个实体(类)可以与多个实例另一个...

    ESP8266一对一或一对多通信配置说明1

    本教程主要讲解如何配置ESP8266进行一对一或一对多的TCP通信。在这样的配置中,ESP8266可以作为接入点(AP)或客户端(STA),并且可以同时连接多个客户端。 首先,我们需要将一个ESP8266模块配置为AP模式,创建一...

    基于C# 的TcpClient/TcpListener的一对多的网络通信程序源码

    要实现多对一或一对多的通信,服务器端需要管理多个并发的TcpClient连接。通常,我们需要创建一个线程或者异步任务来处理每个新的连接,这样服务器就可以同时处理来自多个客户端的请求。可以使用System.Threading....

    Hibernate多对一映射(注解版)

    本教程将重点讲解如何在Hibernate中实现多对一的映射关系,采用的是注解方式进行配置。 **一、多对一关系** 在数据库设计中,多对一关系表示一个实体可以与另一个实体的多个实例相关联。例如,一个部门可以有多名...

    hibernate常用一对一、一对多、多对一、多对多映射关系真实例子(华南银行项目)

    本篇将重点讲解Hibernate如何处理四种基本的关系映射:一对一、一对多、多对一以及多对多,并以华南银行项目的实际例子进行阐述。 首先,我们来理解一对一(One-to-One)映射。在数据库设计中,一对一关系通常出现...

    Hibernate(一对多and多对一)范例

    本范例主要探讨了Hibernate中的两种关联关系:一对多(One-to-Many)和多对一(Many-to-One)。这两种关联关系是数据库设计中常见的实体关系映射,理解并熟练掌握它们对于开发复杂的数据库驱动应用至关重要。 一对...

    mybatis框架(一对多、多对一)

    mybatis框架(一对多、多对一)

    MySQL 多表关联一对多查询实现取最新一条数据的方法示例

    本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...

    快速实现Lora通信(一对多)详解

    快速实现Lora通信(一对多)详解 Lora是一种基于扩频通信的射频技术,它相对于其他射频技术如2.4G或普通433/915M来讲,具有更远的传输距离(数千米)和更强的越障性能。因此,我们可以把一个Lora设备作为中心点,多...

    Hibernate 一对一,一对多,多对多例子

    “Hibernate 一对一,一对多,多对多例子” 指的是使用Hibernate框架实现数据库中不同关联关系的示例。Hibernate是一个Java持久化框架,它提供了对象关系映射(ORM)功能,使得开发人员可以方便地在Java对象和关系...

    mybatis 一对多反过来

    然而,"mybatis 一对多反过来"这个描述可能是指在实际业务中,我们可能需要从子表的角度去查询父表的信息,也就是从多对一的方向进行数据检索。 在MyBatis中,实现这种“反过来”的一对多关系映射主要涉及以下步骤...

    一对多虚拟串口

    要实现一对多虚拟串口,通常需要借助特定的软件工具,例如文章中提到的"Setup1对多COM.msi"。这类软件创建虚拟串口并管理它们与物理串口的映射关系。安装程序"setup.exe"很可能是用于安装这个虚拟串口管理工具的。...

    UDP一对多通信

    在UDP一对多通信中,一个服务端可以同时向多个客户端发送数据,而不需要预先建立连接。这种模式常用于需要广播或多播的场景,如在线视频流、实时游戏和网络音频等。 在C#编程环境中,我们可以使用`UdpClient`类来...

    mybatis之综合查询(1对1 1对多 多对多)

    在数据库设计中,1对1关系意味着两个表之间存在一对一的关联,即一个实体对应另一个实体的唯一实例。在MyBatis中,可以通过`&lt;one&gt;`标签来实现这种关系的映射。首先,在实体类中定义对应的属性,然后在映射文件中配置...

Global site tag (gtag.js) - Google Analytics