多对一关系

1.创建t_user表、t_group表

2.在eclipse中创建对应的实体类

 package com.eneity;

 public class User {

     private int id;
private String name;
private Group group;//注意这里不是gid 而是group对象 public User() {
super();
// TODO Auto-generated constructor stub
}
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 Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
} }

User.java

 package com.eneity;

 public class Group {

     private int id ;
private String name; public Group() {
super();
// TODO Auto-generated constructor stub
}
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;
} }

Group.java

3.写对应的xml映射文件

注意:写好对应的xml文件后要在主配置文件中添加映射

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-4-8 16:35:46 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.eneity.User" table="t_user">
<id name="id" type="int">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<many-to-one name="group" class="com.eneity.Group" fetch="join">
<column name="gid" />
</many-to-one>
</class>
</hibernate-mapping>

com/eneity/User.hbm.xml

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-4-8 16:35:46 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.eneity.Group" table="t_group">
<id name="id" type="int">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
</class>
</hibernate-mapping>

com/eneity/Group.hbm.xml

主配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">xzt521</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/myweb</property>
<property name="hibernate.connection.username">xzt</property>
<!-- 配置显示sql语句 -->
<property name="show_sql">true</property>
<!-- 以一定的格式输出语句 -->
<property name="format_sql">true</property>
<mapping resource="com/eneity/Group.hbm.xml"/>
<mapping resource="com/eneity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

4.写一个测试类

注意:如果只是要查询数据,只要开启session即可

要增删改的话,要开启事务管理

最后要提交事务(这样数据库中才会存进去数据)

关闭session

 package com.test;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.eneity.Customers;
import com.eneity.Group;
import com.eneity.Order;
import com.eneity.User; public class Test1 {
private SessionFactory buildSessionFactory;
private Session Session;
private Transaction Transaction; @Before
public void before() {
Configuration cfg = new Configuration().configure();
buildSessionFactory = cfg.buildSessionFactory();
Session = buildSessionFactory.openSession();
Transaction = Session.beginTransaction();
System.out.println(Session); } @Test
public void test1() {
// TODO Auto-generated method stub Group group = new Group();
group.setName("duhao");
User user = new User();
user.setName("jiunan");
user.setGroup(group);
Session.save(group);
Session.save(user); } @After
public void after() {
Transaction.commit();
Session.close(); }
}

Test1.java

随机推荐

  1. NancyFX 第十二章 通道截拦

    所有的好的Web框架都有一套好的通道截拦的机制,Nancy在我看来是处理最好的.那什么是请求通道那?下面的图可能说的比较清楚些: 正如名称中描述的,一个典型的Web请求在到达最终响应前会穿过一定数量的 ...

  2. Java对于特殊字符做间隔读入的处理(1.3.4)

    先读进字符串,然后再用split分割,注意当默认间隔符有其他意义时,要用\转义字符转义 这道题是pat的一道题,主要读入方法看前面就行了 import java.util.Scanner; publi ...

  3. 背景新增属性和css渐变及倒影

    背景新增属性和css渐变及倒影 一.background新增属性 background-size:指定对象的背景图像的尺寸大小. background:url() 0 0,url() 0 100%;多 ...

  4. Java线程sleep,yield,join,wait方法详解

    1.sleep() 当一个线程调用sleep方法后,他就会放弃cpu,转到阻塞队列,sleep(long millis)方法是Thread类中的静态方法,millis参数设定线程睡眠的时间,毫秒为单位 ...

  5. HTTP 0.9 HTTP 1.0 HTTP 1.1 HTTP 2.0区别

    HTTP协议 :Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议.是互联网上应用 ...

  6. 【Linux】 Linux权限管理与特殊权限

    Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在 ...

  7. linux --> Linux 的启动流程

    Linux 的启动流程 操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但一旦进入操作系统,程序员几乎可以定制所有 ...

  8. 4.Apache POI使用详解

    一.POI结构与常用类 1.POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人 ...

  9. C#图解 (类和继承)

    所有的类都派生自object类 除了特殊的类object ,所有的类都是派生类,即使它们没有基类的规格说明.类object是唯一的非派生类,因为它是继承层次结构的基础. 一个类声明的基类规格说明只能有 ...

  10. bjtu 1819 二哥求和(前缀和)

    题目 . 二哥的求和 时间限制 ms 内存限制 MB 题目描述 某一天,calfcamel问二哥,有道数学题怎么做呀?二哥看了一下说我不会呀,于是二哥找到了你,请你帮他解决这个问题,这样二哥就可以鄙视 ...