多对一关系

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. Hive数据仓库笔记(二)

    分区和桶:   分区:可以提高查询的效率,只扫描固定范围数据,不用全部扫描 CREATE TABLE logs (ts BIGINT, lineSTRING) PARTITIONED BY (dt S ...

  2. SDP(13): Scala.Future - far from completion,绝不能用来做甩手掌柜

    在前面几篇关于数据库引擎的讨论里很多的运算函数都返回了scala.Future类型的结果,因为我以为这样就可以很方便的实现了non-blocking效果.无论任何复杂的数据处理操作,只要把它们包在一个 ...

  3. 引用第三方dll引发的问题解决

    引用的程序集错误  如果引用第三方dll,调试出现引用的程序集出现错误,可以下载dependency,查看这个dll的依赖dll,如果本地电脑没有依赖dll或依赖dll出现问题,则下载或取代依赖dll ...

  4. Mycat 分片规则详解--日期范围 hash 分片

    实现方式:其思想和范围取模分片一样,由于日期取模会出现数据热点问题,所以先根据日期分组,再根据时间 hash 使得短期数据分布跟均匀. 优点:避免扩容时的数据迁移,可以在一定程度上避免范围分片的热点问 ...

  5. Matlab绘图基础——用print函数保存图片(Print figure or save to file)

    print(figure_handle,'formats','-rnumber','filename')  %将图形保存为png格式,分辨率为number的(默认为72),最好指定的分辨率大一点,否则 ...

  6. [luogu1168]中位数_优先队列

    中位数 题目大意:输出读入的前2*k+1个数的中位数.一共有n个数,按照读入顺序. 注释:$1\le n \le 10^9$. 想法:这是优先队列的一个应用qwq.我们弄两个堆.小根堆和大根堆,保证: ...

  7. c语言程序设计第6周编程作业一(分解质因数)

    分解质因数 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程 ...

  8. MySQL之数据的简单查询

    我直接把我的mysql学习笔记以图片的形式粘贴在这里了,供自己回顾(都是一些简单的语句)

  9. 如何在mac上搭建sqli-labs

    近期想学习sql注入,但是一来网络上的资料参差不齐,难以系统的学习:二来随着程序员安全意识的提高,这种完全可以避免的注入漏洞越来越少见了,所以难以找一个合适的网站练手,于是乎,sqli-labs这种实 ...

  10. [福大软工] W班 第2次成绩排行榜

    作业链接 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/866 评分细则 本次个人项目分数由三部分组成 ...