hibernate之一对一
来源:互联网 发布:javascript中的事件 编辑:程序博客网 时间:2024/06/04 17:44
1.一对一:one-to-one
(1)思路:首先Tiny就给大家带来一个一对一的案例,人与身份证的案例。 一人对应一张身份证,一张身份证对应一个人,假如人的身份证掉了,可以再补办一张,如果人不在了,那身份证就没了。所以执行删除操作时,删除卡。人还在,删除人,卡就会没有了。
(2)代码演示:
<1>hibernate的特点:表和实体类相连接,映射关系联系在一起:
A:人的实体类:
package com.zking.entity;public class User {private int uid;private String uname;private Card card;public Card getCard() {return card;}public void setCard(Card card) {this.card = card;}public User() {super();// TODO Auto-generated constructor stub}public User(String uname) {super();this.uname = uname;}public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}}人的映射: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 2017-8-22 14:32:20 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.zking.entity.User" table="USER"> <id name="uid" type="int"> <column name="UID" /> <generator class="native" /> </id> <property name="uname" type="java.lang.String"> <column name="UNAME" /> </property> <one-to-one name="card" class="com.zking.entity.Card" cascade="all-delete-orphan"></one-to-one> </class></hibernate-mapping>
package com.zking.entity;public class Card {private int uid;private String cnum;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public Card() {super();}public Card(String cnum) {super();this.cnum = cnum;}public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public String getCnum() {return cnum;}public void setCnum(String cnum) {this.cnum = cnum;}}
卡的映射:
<?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 2017-8-22 14:32:20 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.zking.entity.Card" table="CARD"> <id name="uid" type="int"> <column name="UID" /> <generator class="foreign"> <param name="property">user</param> </generator> </id> <property name="cnum" type="java.lang.String"> <column name="CNUM" /> </property> <one-to-one name="user" class="com.zking.entity.User"></one-to-one> </class></hibernate-mapping>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>G160628_hibernate02</groupId> <artifactId>G160628_hibernate02</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>G160628_hibernate02 Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <argLine>-Dfile.encoding=UTF-8</argLine> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0-b07</version> <scope>provided</scope></dependency> <!-- 加入hibernate依赖 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version></dependency> <!-- Mysql依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> </dependency> </dependencies> <build> <finalName>G160628_hibernate02</finalName> </build></project>
package com.zking.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.zking.entity.Card;import com.zking.entity.User;public class TestOneToOne {private SessionFactory sessionFactory;private Session session;private Transaction transaction;//在方法执行之前执行@Beforepublic void before(){//设置配置文件Configuration configuration=new Configuration().configure();//获取sessionFactorysessionFactory = configuration.buildSessionFactory();//获取session session = sessionFactory.openSession();//开始事务transaction = session.beginTransaction();}//在方法执行之后调用@Afterpublic void after(){//提交事务transaction.commit();session.close();sessionFactory.close();}public void testAdd(){//增加User user=new User("张三");Card card=new Card("43110731");//互设user.setCard(card);card.setUser(user);session.save(user);session.save(card);}public void testGet(){//查询User user=session.get(User.class, 1);System.out.println(user.getCard().getCnum());}public void testDelete(){//删除主表//User user=session.get(User.class, 2);//session.delete(user);//删除从表Card card=session.get(Card.class, 3);card.getUser().setCard(null);session.delete(card);}}
好了,到此就一对一的案例就到此结束了,有疑惑的孩纸可以进行交流
阅读全文
0 0
- Hibernate之一对一映射
- hibernate之一对一
- Hibernate之一对一关联映射
- hibernate映射之一对一映射
- Hibernate学习之一对一映射
- Hibernate annotations系列之双向一对一
- Hibernate笔记之6数据关联一对一
- Hibernate笔记之6数据关联一对一
- Hibernate关联关系映射之一对一
- Hibernate 关联映射 之 一对一 关联
- 深入研究Hibernate之八:一对一
- Hibernate初学之一对一双向、单向
- Hibernate关联关系之一对一(主键关联)
- Hibernate入门之关系篇:一对一映射
- Hibernate进阶之双向一对一关系映射
- Hibernate关系映射之一对一关系
- hibernate关联映射之一对一单向关联
- Hibernate关联之 一对一主键单向关联
- HDU --- 5703 Desert 水题【找规律】
- 扫地机器人排行榜
- 2265 Card Game (Second Edition)
- 关于讯飞语音的一些思路
- 使用Node.js+Socket.IO搭建WebSocket 实现多人群聊
- hibernate之一对一
- 协程(2)
- 基于libcurl,使用PUT方法上传内存数据
- kafka消费和生产的xml配置
- spark2.2编译
- php获取用户真实IP地址
- Intellij IDEA 使用jrebel运行spring-boot并实现自动编译进行热部署
- 解决 Android 7.0 调用照相机照相报错
- 栈的顺序存储及链式存储的分别实现