Hibernate—(关系)
来源:互联网 发布:画派 知乎 编辑:程序博客网 时间:2024/05/17 03:03
一、一对一(举个例子 用户和身份证的关系)
实体类:
①用户
User.java
package com.sun.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.sun.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.sun.entity.Card" cascade="all-delete-orphan"></one-to-one><!--一对一--></class></hibernate-mapping>②身份证
Card.java
package com.sun.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;}}Card.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.sun.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.sun.entity.User"></one-to-one><!--一对一--></class>
</hibernate-mapping>测试:package com.sun.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.sun.entity.Card;import com.sun.entity.User;public class TestOneToOne {private SessionFactory sessionFactory;private Session session;private Transaction transaction;@Beforepublic void before(){Configuration configuration=new Configuration().configure();sessionFactory = configuration.buildSessionFactory();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);} //根据id查询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);}}二、一对多(举个例子 省和市)
实体类:
①Province.java
package com.sun.entity;import java.util.HashSet;import java.util.Set;public class Province {private int pid;private String pname;private Set<City> cities=new HashSet<City>();public Set<City> getCities() {return cities;}public void setCities(Set<City> cities) {this.cities = cities;}public Province() {super();}public Province(String pname) {super();this.pname = pname;}public int getPid() {return pid;}public void setPid(int pid) {this.pid = pid;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}}Province.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 15:14:11 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.sun.entity.Province" table="PROVINCE"> <id name="pid" type="int"> <column name="PID" /> <generator class="native" /> </id> <property name="pname" type="java.lang.String"> <column name="PNAME" /> </property> <set name="cities" table="city" cascade="save-update"> <!--cascde级联--> <key column="pid"></key> <one-to-many class="com.sun.entity.City"/> </set> </class></hibernate-mapping>②City.java
package com.sun.entity;public class City {private int cid;private String cname;private Province province;public Province getProvince() {return province;}public void setProvince(Province province) {this.province = province;}public City() {super();// TODO Auto-generated constructor stub}public City(String cname) {super();this.cname = cname;}public int getCid() {return cid;}public void setCid(int cid) {this.cid = cid;}public String getCname() {return cname;}public void setCname(String cname) {this.cname = cname;}}City.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 15:14:11 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.sun.entity.City" table="CITY"> <id name="cid" type="int"> <column name="CID" /> <generator class="native" /> </id> <property name="cname" type="java.lang.String"> <column name="CNAME" /> </property> <!-- <property name="pid" type="int"> <column name="PID" /> </property> --> <many-to-one name="province" class="com.sun.entity.Province" column="pid"></many-to-one> </class></hibernate-mapping>测试:
package com.sun.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.sun.entity.Card;import com.sun.entity.City;import com.sun.entity.Province;import com.sun.entity.User;public class TestOneToMany {private SessionFactory sessionFactory;private Session session;private Transaction transaction;@Beforepublic void before(){Configuration configuration=new Configuration().configure();sessionFactory = configuration.buildSessionFactory();session = sessionFactory.openSession();transaction = session.beginTransaction();}@Afterpublic void after(){transaction.commit();session.close();sessionFactory.close();}@Testpublic void testAdd(){ //增加(级联)Province province=new Province("湖南省");City city1=new City("长沙市");City city2=new City("娄底市");City city3=new City("其他市");province.getCities().add(city1);province.getCities().add(city2);province.getCities().add(city3);city1.setProvince(province);city2.setProvince(province);city3.setProvince(province);session.save(province);}}三、多对多(举个例子 用户和角色)
实体类:
①Users.java
package com.sun.entity;import java.util.HashSet;import java.util.Set;public class Users {private int uid;private String uname;private Set<Roles> roles=new HashSet<Roles>();public Set<Roles> getRoles() {return roles;}public void setRoles(Set<Roles> roles) {this.roles = roles;}public Users() {super();// TODO Auto-generated constructor stub}public Users(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;}}Users.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 15:41:45 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.sun.entity.Users" table="USERS"> <id name="uid" type="int"> <column name="UID" /> <generator class="native" /> </id> <property name="uname" type="java.lang.String"> <column name="UNAME" /> </property> <set name="roles" table="u_r" cascade="save-update"> <key column="uid"></key> <many-to-many class="com.sun.entity.Roles" column="rid"></many-to-many> </set> </class></hibernate-mapping>②Roles.java
package com.sun.entity;import java.util.HashSet;import java.util.Set;public class Roles {private int rid;private String rname;private Set<Users> users=new HashSet<Users>();public Set<Users> getUsers() {return users;}public void setUsers(Set<Users> users) {this.users = users;}public Roles() {super();}public Roles(String rname) {super();this.rname = rname;}public int getRid() {return rid;}public void setRid(int rid) {this.rid = rid;}public String getRname() {return rname;}public void setRname(String rname) {this.rname = rname;}}Roles.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 15:41:45 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.sun.entity.Roles" table="ROLES"> <id name="rid" type="int"> <column name="RID" /> <generator class="native" /> </id> <property name="rname" type="java.lang.String"> <column name="RNAME" /> </property> <set name="users" table="u_r"> <key column="rid"></key> <many-to-many class="com.sun.entity.Users" column="uid"></many-to-many><!--多对多--> </set> </class></hibernate-mapping>测试:
package com.sun.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.sun.entity.Card;import com.sun.entity.City;import com.sun.entity.Province;import com.sun.entity.Roles;import com.sun.entity.User;import com.sun.entity.Users;public class TestManyToMany {private SessionFactory sessionFactory;private Session session;private Transaction transaction;@Beforepublic void before(){Configuration configuration=new Configuration().configure();sessionFactory = configuration.buildSessionFactory();session = sessionFactory.openSession();transaction = session.beginTransaction();}@Afterpublic void after(){transaction.commit();session.close();sessionFactory.close();}@Testpublic void testAdd(){Users users1=new Users("辉辉");Users users2=new Users("静静");Roles roles1=new Roles("老公");Roles roles2=new Roles("老婆");Roles roles3=new Roles("儿子");Roles roles4=new Roles("孙子");users1.getRoles().add(roles1);users1.getRoles().add(roles3);users1.getRoles().add(roles4);users2.getRoles().add(roles2);users2.getRoles().add(roles4);session.save(users1);session.save(users2);}}
公共的pop.xml
<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>hibernate02</groupId> <artifactId>hibernate02</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>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>hibernate02</finalName> </build></project>公共的hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/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">password</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <property name="hibernate.connection.username">root</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <mapping resource="com/sun/entity/User.hbm.xml"/> <mapping resource="com/sun/entity/Card.hbm.xml"/> <mapping resource="com/sun/entity/Province.hbm.xml"/> <mapping resource="com/sun/entity/City.hbm.xml"/> <mapping resource="com/sun/entity/Users.hbm.xml"/> <mapping resource="com/sun/entity/Roles.hbm.xml"/> </session-factory></hibernate-configuration>
阅读全文
0 0
- Hibernate—(关系)
- hibernate 映射关系—关系映射(一对多)
- hibernate 映射关系—关系映射(一对一)
- Hibernate(六)Hibernate继承关系映射
- Hibernate(九)hibernate一对一关系映射
- Hibernate——关联关系
- 对象/关系映射—Hibernate
- hibernate 映射关系—总纲
- 【Hibernate】—对象关系映射
- Hibernate映射关系(一)
- Hibernate关系(一对多)
- Hibernate关联关系(四)
- Hibernate映射关系(二)
- Hibernate(四)---映射关系
- hibernate 学习三——一对一关系(OneToOne)
- hibernate 学习四——一对多关系(OneToMany)
- Hibernate逍遥游记——(一)访问关系数据库
- SSH框架之Hibernate(1)——映射关系
- vue-cli搭建单页面应用
- 矩阵快速幂
- Windows安装redis
- SnackBar基本使用
- recyclerView的方式做频道管理
- Hibernate—(关系)
- phpcms 链接ucenter修改用户头像
- Spring MVC (2) 注解RequestMapping的使用
- 【React】在React项目中使用parallax.js
- Java 输入一串字符按照格式逆序输出
- 紫书 统计字符1的个数
- 剑指offer——数组中的逆序对
- 系统页面跳转
- Android常见内存泄漏及解决方法