2019独角兽企业重金招聘Python工程师标准>>>

模型user,address

address对user进行外键关联,意思就是address的主键是由user的主键关联生成的,现有user后有address

user sql语句

CREATE TABLE `NewTable` (
`userid`  int(11) NOT NULL AUTO_INCREMENT ,
`account`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`userid`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=6
ROW_FORMAT=COMPACT
;

address sql语句

CREATE TABLE `NewTable` (
`addressid`  int(11) NOT NULL AUTO_INCREMENT ,
`addressinfo`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`addressid`),
FOREIGN KEY (`addressid`) REFERENCES `user` (`userid`) ON DELETE RESTRICT ON UPDATE RESTRICT
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=6
ROW_FORMAT=COMPACT
;

user 类

package dto;import java.io.Serializable;public class User{private int userid;private String account;private String password;public int getUserid() {return userid;}public void setUserid(int userid) {this.userid = userid;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

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 2015-6-17 22:15:11 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping><class name="dto.User" table="user" catalog="snlu"><id name="userid" type="java.lang.Integer" access="field"><column name="userid" /><generator class="identity" /></id><property name="account" type="string"><column name="account" /></property><property name="password" type="string"><column name="password" /></property></class>
</hibernate-mapping>

address类

package dto;public class Address {private String addressinfo;private int addressid;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String getAddressinfo() {return addressinfo;}public void setAddressinfo(String addressinfo) {this.addressinfo = addressinfo;}public int getAddressid() {return addressid;}public void setAddressid(int addressid) {this.addressid = addressid;}}

address.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 2015-6-17 22:15:11 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping><class name="dto.Address" table="address" catalog="snlu"><id name="addressid" type="java.lang.Integer" access="field"><column name="addressid" /><generator class="foreign"><param name="property">user</param></generator></id><one-to-one name="user" class="dto.User" constrained="true"></one-to-one><property name="addressinfo" type="string"><column name="addressinfo" /></property></class>
</hibernate-mapping>

注:若使用hibernate tools生成实体类xml很可能生成的为一对一主键双向关联注意查看 on-to-one标签

hibernate.cfg.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.bytecode.use_reflection_optimizer">false</property><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.password">root</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/snlu</property><property name="hibernate.connection.username">root</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hibernate.jdbc.fetch_size">5</property><property name="hibernate.max_fetch_depth">1</property><property name="hibernate.search.autoregister_listeners">false</property><property name="hibernate.show_sql">true</property><property name="hibernate.validator.apply_to_ddl">false</property><mapping resource="dto/User.hbm.xml"/><mapping resource="dto/Address.hbm.xml"/></session-factory>
</hibernate-configuration>

main

package test;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import util.HibernateUtil;
import dao.DAOFactory;
import dao.UserDAO;
import dao.UserDAOImpl;
import dto.Address;
import dto.User;public class UserTest {public static void main(String[] args) {Session session=HibernateUtil.getSessionFactory().openSession();Transaction tx=session.beginTransaction();User user=new User();user.setAccount("jack");user.setPassword("111111");Address a=new Address();a.setAddressinfo("america");a.setUser(user);session.save(user);session.save(a);tx.commit();HibernateUtil.closeSession();}}

hibernateUtil可在上篇文章hibernate速成中找到

注:将save(user)注释掉,只跑save(address)仍会保存user

转载于:https://my.oschina.net/enjoymore/blog/468138

Hibernate一对一主键单向关联相关推荐

  1. Hibernate 一对一外键单向关联

    [align=center][size=medium]Hibernate 一对一外键单向关联[/size][/align] 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的.唯一的不同就是单向 ...

  2. hibernate一对一外键单向关联

    与上篇相对应,还是client和address是一对一的外键关联关系,address表中的主键ID与client表中的外键CLIENTADDRESSID构成一对一外键关联关系. 表结构和sql语句就不 ...

  3. hibernate一对一主键关联映射(一)---单向关联

    1.新建工程项目hibernate_one2one_pk_1,添加hibernate所需Jar包和mysql驱动Jar包. 2.建立工具类HihernateUtils.java和ExportDB.ja ...

  4. hibernate一对一主键关联映射(二)---双向关联

    1.新建工程项目hibernate_one2one_pk_2,加入hibernate所需的Jar包和数据库mysql驱动Jar包. 2.编写工具类HibernateUtils.java和ExportD ...

  5. hibernate一对一主键关联映射(单向关联Person-----IdCard)

    一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段 例子: package com.hibernate; public class IdCard { private int id; ...

  6. hibernate一对一主键唯一外键关联(一)

    1.新建工程项目hibernate_one2one_ufk_1,添加hibernate所需Jar包和数据库驱动Jar包. 2.编写工具类HibernateUtils.java和ExportDB.jav ...

  7. hibernate一对一主键唯一外键关联(二)

    1.新建工程项目hibernate_one2one_ufk_2,添加hibernate所需的Jar包和数据库驱动的Jar包. 2.编写工具类HibernatUtils.java和ExportDB.ja ...

  8. hibernate的一对一主键双向映射关系和外键双向映射关系(一)

    主键关联的重点是关联的两个表共享一个主键值.本例中采用,一个单位在网上的一个系统中注册会员. 1,会员数据保存在会员表company中,每个会员的登录账号保存在表login中: 2,一个会员只有一个登 ...

  9. Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联...

    2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...

最新文章

  1. 电机测试matlab,基于MATLAB的电机故障诊断模型训练与测试平台
  2. flock - 必应词典
  3. 《构建实时机器学习系统》一1.8 实时机器学习模型的生存期
  4. [蓝桥杯2018初赛]第几个幸运数-数论+枚举
  5. html奇淫技巧 2 教你如何进行图文环绕布局 原创
  6. 如何快速找出找出两个数组中的_看动画学算法之:排序-快速排序
  7. “驱动能力”是什么意思???
  8. java list 去除 重复值
  9. jQuery EasyUI快速入门01
  10. C++ OpenCV光平面标定-线激光提取
  11. 真好玩python教孩子学编程_Python真好玩:教孩子学编程
  12. IOS OpenGL ES GPUImage 图像 XYDerivative 边缘检测 GPUImageXYDerivativeFilter
  13. org/springframework/boot/actuate/metrics/cache/CacheMeterBinderProvider not found. Make sure your ow
  14. python怎么安装whl文件
  15. 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。
  16. Python request如何做接口测试
  17. 定时器0 定时器2波特率发生器 AD转换
  18. Python数据分析习题(基于pandasnumpy模块)(上)
  19. 身体语言密码_“我根本不知道她到底想要什么”,《身体语言密码》告诉你
  20. 一文读懂麦克纳姆轮全向移动原理及剖析

热门文章

  1. Handler.postDelayed(new Runnable)是否运行在主线程
  2. DDD(领域驱动设计)系列之一-DomainPrimitive
  3. virtio、vhost和vhost-user比较
  4. ONVIF协议实现1:Server端Discovery的实现详解
  5. 实战:kafka实现日志收集系统
  6. 深入理解SpringBoot(4)——web开发
  7. 关于服务网关的几个问题
  8. 内存映射文件mmap原理分析
  9. 美团(Leaf)分布式ID算法
  10. IO复用之select、poll、epoll模型