Hibernate一对一主键单向关联
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一对一主键单向关联相关推荐
- Hibernate 一对一外键单向关联
[align=center][size=medium]Hibernate 一对一外键单向关联[/size][/align] 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的.唯一的不同就是单向 ...
- hibernate一对一外键单向关联
与上篇相对应,还是client和address是一对一的外键关联关系,address表中的主键ID与client表中的外键CLIENTADDRESSID构成一对一外键关联关系. 表结构和sql语句就不 ...
- hibernate一对一主键关联映射(一)---单向关联
1.新建工程项目hibernate_one2one_pk_1,添加hibernate所需Jar包和mysql驱动Jar包. 2.建立工具类HihernateUtils.java和ExportDB.ja ...
- hibernate一对一主键关联映射(二)---双向关联
1.新建工程项目hibernate_one2one_pk_2,加入hibernate所需的Jar包和数据库mysql驱动Jar包. 2.编写工具类HibernateUtils.java和ExportD ...
- hibernate一对一主键关联映射(单向关联Person-----IdCard)
一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段 例子: package com.hibernate; public class IdCard { private int id; ...
- hibernate一对一主键唯一外键关联(一)
1.新建工程项目hibernate_one2one_ufk_1,添加hibernate所需Jar包和数据库驱动Jar包. 2.编写工具类HibernateUtils.java和ExportDB.jav ...
- hibernate一对一主键唯一外键关联(二)
1.新建工程项目hibernate_one2one_ufk_2,添加hibernate所需的Jar包和数据库驱动的Jar包. 2.编写工具类HibernatUtils.java和ExportDB.ja ...
- hibernate的一对一主键双向映射关系和外键双向映射关系(一)
主键关联的重点是关联的两个表共享一个主键值.本例中采用,一个单位在网上的一个系统中注册会员. 1,会员数据保存在会员表company中,每个会员的登录账号保存在表login中: 2,一个会员只有一个登 ...
- Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联...
2018-11-10 22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...
最新文章
- 电机测试matlab,基于MATLAB的电机故障诊断模型训练与测试平台
- flock - 必应词典
- 《构建实时机器学习系统》一1.8 实时机器学习模型的生存期
- [蓝桥杯2018初赛]第几个幸运数-数论+枚举
- html奇淫技巧 2 教你如何进行图文环绕布局 原创
- 如何快速找出找出两个数组中的_看动画学算法之:排序-快速排序
- “驱动能力”是什么意思???
- java list 去除 重复值
- jQuery EasyUI快速入门01
- C++ OpenCV光平面标定-线激光提取
- 真好玩python教孩子学编程_Python真好玩:教孩子学编程
- IOS OpenGL ES GPUImage 图像 XYDerivative 边缘检测 GPUImageXYDerivativeFilter
- org/springframework/boot/actuate/metrics/cache/CacheMeterBinderProvider not found. Make sure your ow
- python怎么安装whl文件
- 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。
- Python request如何做接口测试
- 定时器0 定时器2波特率发生器 AD转换
- Python数据分析习题(基于pandasnumpy模块)(上)
- 身体语言密码_“我根本不知道她到底想要什么”,《身体语言密码》告诉你
- 一文读懂麦克纳姆轮全向移动原理及剖析