`
zengshaotao
  • 浏览: 787720 次
  • 性别: 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)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...

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

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

    多对一双向关联(视频)

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

    关于关系型数据库基本知识(主键、外键、一对一、一对多、多对一等).docx

    多对一关系是从一对多的另一个角度看,如员工表中的部门ID可以是部门表的外键,形成多对一的关联。 最后,多对多关系表示一个表中的记录可以对应另一表中的多个记录,反之亦然。这通常通过中间表来实现,如学生和...

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

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

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

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

    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;`标签来实现这种关系的映射。首先,在实体类中定义对应的属性,然后在映射文件中配置...

    mybatis之多对多

    5. **一对一(OneToOne)和一对多(OneToMany)嵌套映射**:在多对多关系中,常常伴随着一对一或一对多的子关系。MyBatis提供`&lt;oneToMany&gt;`和`&lt;oneToOne&gt;`标签,允许我们在映射文件中声明这些关系。 6. **级联操作...

    一对多 多字节的can总线通信

    在本文中,我们将深入探讨“一对多 多字节的CAN总线通信”这一主题,特别是在STM32F103VET微控制器环境下的实现。CAN(Controller Area Network)总线是一种广泛应用的通信协议,尤其在汽车、工业自动化和嵌入式系统...

    基于ESP32 一对多控制 实验程序

    【ESP32 一对多控制基础】 ESP32是一款由Espressif Systems开发的高性能、低成本、低功耗的无线微控制器,集成了Wi-Fi、蓝牙(包括BLE)和双核32位CPU,适用于物联网(IoT)应用。在"基于ESP32 一对多控制 实验程序...

Global site tag (gtag.js) - Google Analytics