多对一关系

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. ffplay常用命令

    一.ffplay 常用参数 ffplay不仅仅是播放器,同时也是测试ffmpeg的codec引擎,format引擎,以及filter引擎的工具,并且也可以做可视化的媒体参数分析,可以通过ffplay ...

  2. 关于CoordinatorLayout的用法——复杂交互的克星

    好久没有写博客了,主要还是任务过多哈.在开发的过程当中,也记录了很多东西,但是技术这个事吧,其实,时效性真的事非常强--就比如说,你昨天还津津乐道的一个难点解决方案,你过个几天再回过头去看它,就会有一 ...

  3. RPC vs RESTful

    在微服务中,使用什么协议来构建服务体系,一直是个热门话题. 争论的焦点集中在两个候选技术: (binary) RPC or Restful. 以Apache Thrift为代表的二进制RPC,支持多种 ...

  4. 20.DOM

    定义 文档对象模型(Document Object Model)是一种用于HTML和XML文档的编程接口. 查找元素 1.直接查找 document.getElementById 根据ID获取一个标签 ...

  5. Appserv(Apache) 配置ssl证书

    一:打开httpd.conf文件,移除注释的行: Include conf/extra/httpd-ahssl.conf LoadModule ssl_module modules/mod_ssl.s ...

  6. Lintcode248 Count of Smaller Number solution 题解

    [题目描述] Give you an integer array (index from 0 to n-1, where n is the size of this array, value from ...

  7. 学习笔记-C++ STL iterator与对指针的理解-20170618

    vector的itrerator支持random access #include<iostream> #include<vector> using namespace std; ...

  8. char码值对应列表大全

    Char("0") 为0的字符Char("1") Char("2") Char("3") Char("4&qu ...

  9. puppet客户端拉取服务端的资源时报错

    2017-11-01   16:21:47 客户端再拉取服务端的配置的资源时,出现一下报错: 造成原因:服务配置的资源不可用: 解决办法:将服务端不正确的资源配置删除: master:   cd   ...

  10. 智能合约语言 Solidity 教程系列7 - 以太单位及时间单位

    这是Solidity教程系列文章第7篇介绍以太单位及时间单位,系列带你全面深入理解Solidity语言. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所 ...