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
随机推荐
- angular路由详解三(路由参数传递)
我们经常用路由传递参数,路由主要有三种方式: 第一种:在查询参数中传递数据 {path:"address/:id"} => address/1 => Activa ...
- PAT乙级-1047. 编程团体赛(20)
编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正 ...
- ETL总结(扫盲版)
1.ETL名词解释 英文缩写 Extract-Transform-Load ,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至到目的端(一般指的是数 ...
- animation,transform属性
animation属性 使用@keyfarmes属性开启动画步骤 结构体:@keyfarmes name{ from{ } to{ } } @keyfarmes name{ 0%{ } 50%{ } ...
- IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除
1. 修改Maven的Settings.xml文件添加如下内容 <profile> <id>jdk-1.8</id> <activation> < ...
- 使用angular-ui-router替代ng-router
angular框架自身提供的ng-route在一定程度上满足了我们的需求,但是他只针对于单视图,比如点击一个link跳转到另一个视图,但是在实际业务中,需要一个状态对应的视图中还包含其他的视图,或者一 ...
- phpStorm安装方法
1)下载 http://big2.h5gamen.com/soft/jetbrainscrack-2.6.2.zip 放到phpstorm安装目录下的lib文件夹 如放到f盘 F:\PhpStorm ...
- 笔记:Spring Cloud Hystrix 封装命令
使用继承的方式来创建Hystrix 命令,不是用注解的方式来使用 Hystrix 创建 HelloGetCommand 对象,继承与 HystrixCommand 并实现 run 方法,示例如下: p ...
- 笔记:Maven 插件及配置详解
插件使用配置 用户能够自己选择将某个插件目标绑定到生命周期的某个阶段上,例如创建项目的源码JAR包,内置的插件绑定关系并没有涉及这个任务,mavent-source-plugin 可以帮助我们完成该任 ...
- PAT 个位数统计
描述 给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个 ...