hibernate_exercise-many- to-one(1)
多对一关系
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
随机推荐
- Android Studio 封装的类的继承
有个封装好的Firebase.java文件,放到项目中直接使用就可以,这个需要继承一个AbstractFirebase类,在广告代码中,可以等到加广告的时候来加这个文件. 这个地方的继承,因为是ads ...
- 模拟eval
function eval(fn) { var Fn = Function; return new Fn('return' + fn) (); }
- Ubuntu Mininet环境搭建
我们通过源码方式搭建mininet仿真平台,使用git下载mininet源码 git clone git://github.com/mininet/mininet 下载完成之后,使用下面命令选择安装版 ...
- 写了个批量查询qs的软件
因为需要,自己写了个批量查询qs的小软件.从网站中抓出需要的数据,格式化显示: 对字符串进行检测处理,先用Replace函数去掉字符串的空格,再用正则表达式匹配,返回匹配的字符串,如果没有匹配,则返回 ...
- [模拟赛] T2 混合图
Description Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家.他一般 会从任意一个点出发,随便找边 ...
- 笔记:Spring Boot 项目构建与解析
构建 Maven 项目 通过官方的 Spring Initializr 工具来产生基础项目,访问 http://start.spring.io/ ,如下图所示,该页面提供了以Maven构建Spring ...
- 18.C++-[ ]操作符使用 、函数对象与普通函数区别(详解)
在上章17.C++-string字符串类(详解)学习了string类,发现可以通过[ ]重载操作符来访问每个字符. 比如: string s="SAD"; for(int i=0, ...
- 简洁明了的插值音频重采样算法例子 (附完整C代码)
近一段时间在图像算法以及音频算法之间来回游走. 经常有一些需求,需要将音频进行采样转码处理. 现有的知名开源库,诸如: webrtc , sox等, 代码阅读起来实在闹心. 而音频重采样其实也就是插值 ...
- Algorithm --> 筛法求素数
一般的线性筛法 genPrime和genPrime2是筛法求素数的两种实现,一个思路,表示方法不同而已. #include<iostream> #include<math.h> ...
- centos下mongodb备份(dump)与还原(restore)
数据服务器,数据库采用mongodb数据库 安装:通过增加配置安装mongodb-org,版本为3.0.7,yum安装 yum install mongodb-org 数据备份与 ...