Hibernate(四)一对多映射
来源:互联网 发布:上海松丰齿科骗局知乎 编辑:程序博客网 时间:2024/06/06 01:08
数据库表创建
create table grade( gid int primary key, gname varchar(20) not null, gdesc varchar(50));create table student( sid int primary key, sname varchar(20) not null, sex char(2), gid int);alter table student add constraint fk_student_gid foreign key (gid)references grade(gid);
Grade年级class
package com.imooc.entity;import java.io.Serializable;import java.util.HashSet;import java.util.Set;public class Grade implements Serializable { private int gid; private String gname; private String gdesc; //在一方定义一个多方的集合 private Set<Student> students = new HashSet<Student>(); public int getGid() { return gid; } public void setGid(int gid) { this.gid = gid; } public String getGname() { return gname; } public void setGname(String gname) { this.gname = gname; } public String getGdesc() { return gdesc; } public void setGdesc(String gdesc) { this.gdesc = gdesc; } public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } public Grade() { super(); } public Grade(String gname, String gdesc) { super(); this.gname = gname; this.gdesc = gdesc; } public Grade(int gid, String gname, String gdesc, Set<Student> students) { super(); this.gid = gid; this.gname = gname; this.gdesc = gdesc; this.students = students; }}
学生student class
package com.imooc.entity;import java.io.Serializable;public class Student implements Serializable { private int sid; private String sname; private String sex; private Grade grade; public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } public Student() { super(); } public Student(String sname, String sex) { super(); this.sname = sname; this.sex = sex; }}
Grade.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping > <class name="com.imooc.entity.Grade" table="grade"> <id name="gid" column="gid" type="java.lang.Integer"> <generator class="increment"></generator> </id> <property name="gname" type="java.lang.String"> <column name="gname" length="20" not-null="true"></column> </property> <property name="gdesc" > <column name="gdesc"></column> </property> <!-- 配置单向的一对多关系 inverse="true" 由多的一方进行 cascade级联操作保存one的一方会保存many的一方--> <set name="students" table="student" cascade="save-update" inverse="true"> <!--指定关联的外键列 --> <key column="gid"></key> <one-to-many class="com.imooc.entity.Student"/> </set> </class></hibernate-mapping>
student.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping > <class name="com.imooc.entity.Student" table="student"> <id name="sid" column="sid" type="java.lang.Integer"> <generator class="increment"></generator> </id> <property name="sname" type="java.lang.String"> <column name="sname" length="20" not-null="true"></column> </property> <property name="sex" > <column name="sex"></column> </property> <many-to-one name="grade" class="com.imooc.entity.Grade" column="gid"> </many-to-one> </class></hibernate-mapping>
HibernateUtil.java class
package com.imooc.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;public class HibernateUtil { private static SessionFactory sessionFactory; private static Session session; static{ Configuration config = new Configuration().configure(); //ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build(); sessionFactory = config.buildSessionFactory(ssr); } //获取SessionFactory public static SessionFactory getSessionFactory(){ return sessionFactory; } //获取Session public static Session getSession(){ session = sessionFactory.openSession(); return session; } //关闭session public static void closeSession(Session session){ if(session!=null){ session.close(); } }}
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> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///imooc?useUnicode=true&characterEncoding=UTF-8</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping resource="com/imooc/entity/Grade.hbm.xml"/> <mapping resource="com/imooc/entity/Student.hbm.xml"/> </session-factory></hibernate-configuration>
增删改查
package com.imooc.entity;import java.util.Set;import org.hibernate.Session;import org.hibernate.Transaction;import com.imooc.util.HibernateUtil;public class Test { public static void main(String[] args) { add(); //findStudentsByGrade(); //update(); //delete(); } //将学生添加到班级 public static void add(){ Grade g = new Grade("Java四班","Java软件开发四班"); Student stu1 = new Student("张三2","男"); Student stu2 = new Student("慕女神2","女"); //如果希望在学生表中添加对应的班级编号, g.getStudents().add(stu1); g.getStudents().add(stu2); Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); session.save(g); //设置cascade后会自动保存 //session.save(stu1); //session.save(stu2); tx.commit(); HibernateUtil.closeSession(session); } public static void findStudentsByGrade(){ Session session = HibernateUtil.getSession(); Grade grade = (Grade) session.get(Grade.class, 1); System.out.println(grade.getGname()+","+grade.getGdesc()); Set<Student> students= grade.getStudents(); for(Student stu:students){ System.out.println(stu.getSname()+","+stu.getSex()); } } public static void update(){ Grade g = new Grade("Java二班","Java软件开发二班"); Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Student stu = (Student) session.get(Student.class,1); g.getStudents().add(stu); session.save(g); tx.commit(); HibernateUtil.closeSession(session); } public static void delete(){ Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Student stu = (Student) session.get(Student.class, 2); session.delete(stu); tx.commit(); HibernateUtil.closeSession(session); }}
package com.imooc.entity;import org.hibernate.Session;import org.hibernate.Transaction;import com.imooc.util.HibernateUtil;public class Test02 { public static void main(String[] args) { save(); } public static void save(){ Grade g = new Grade("Java三班", "java软件开发三班"); Student stu1 =new Student("慕女生","女"); Student stu2 =new Student("小穆穆","男"); stu1.setGrade(g); stu2.setGrade(g); Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); session.save(g); session.save(stu1); session.save(stu2); tx.commit(); HibernateUtil.closeSession(session); }}
阅读全文
0 0
- Hibernate(四)一对多映射
- Hibernate框架-------一对多映射(四)
- hibernate 一对多映射
- Hibernate一对多映射
- Hibernate 一对多映射
- Hibernate 一对多映射
- hibernate 一对多映射
- hibernate一对多映射
- 【Hibernate】一对多映射
- Hibernate映射一对多
- Hibernate一对多映射
- Hibernate一对多映射
- hibernate一对多映射
- Hibernate 简单使用(四)一对多关联映射
- Hibernate(四)一对多映射 补充一:单向一对多关系(班级->学生)
- Hibernate 一对多关系映射
- Hibernate一对多映射举例
- Hibernate一对多关联映射
- 认识UART接口
- 前端框架---backbone.js之个人愚见
- zzuli-oj1002
- 黑与白
- java文件相关工具
- Hibernate(四)一对多映射
- 算法的时间复杂度和空间复杂度-总结
- 第一天@进程
- ipython notebook 整合spark
- c++继承访问控制
- SpringBoot集成篇(二) 异步调用Async
- 关于malloc,realloc和free函数的讲解
- splay区间翻转bzoj 3223(tyvj 1729)文艺平衡树题解
- Hadoop日志格式