hibernate之5.many2one单向
来源:互联网 发布:淘宝优惠券转手机端 编辑:程序博客网 时间:2024/04/30 14:26
关系数据库表间关系:
1 对 1
1 对 多
多 对 多
表间关系设计
基于主键关联
基于外键关联
基于中间表
1 对 1关系实现:
基于主键关联
基于外键关联
基于中间表
1 对 多关系实现:
基于外键关联
基于中间表
多 对 多关系实现:
基于中间表
面向对象实体关系
1 对 1
1 对 多
多 对 多
方向 :
单向、双向
CRUD:
many2one配置:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.demo.model"> <class name="Certificate" table="t_certificate"> <id name="certificateId" column="certificate_id"> <generator class="sequence"><param name="sequence">SEQ_T_CERTIFICATE</param></generator> </id> <property name="certificateName" column="certificate_name"/> <property name="certificateNo" column="certificate_no"/> <many-to-one name="student" column="student_id"></many-to-one> </class></hibernate-mapping><many-to-one name="student" column="student_id"></many-to-one>
增、删、改
@Testpublic void addTest() {Student student = new Student();student.setStudentName("王五");student.setAge(35);Certificate certificate1 = new Certificate();certificate1.setCertificateName("aa");certificate1.setCertificateNo("3a10001");certificate1.setStudent(student);Certificate certificate2 = new Certificate();certificate2.setCertificateName("bb");certificate2.setCertificateNo("3a10002");certificate2.setStudent(student);Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();// 先保存one,再保存manysession.save(student);session.save(certificate1);session.save(certificate2);session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}@Testpublic void deleteTest() {Student student = new Student();student.setStudentId(1);Certificate certificate1 = new Certificate();certificate1.setCertificateId(1);Certificate certificate2 = new Certificate();certificate2.setCertificateId(2);Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();session.delete(certificate1);session.delete(certificate2);session.delete(student);session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}@Testpublic void updateTest() {Student student = new Student();student.setStudentId(2);student.setStudentName("赵四");Certificate certificate1 = new Certificate();certificate1.setCertificateId(3);certificate1.setCertificateName("cc");certificate1.setCertificateNo("s0001");certificate1.setStudent(student);Certificate certificate2 = new Certificate();certificate2.setCertificateId(4);certificate2.setCertificateName("dd");certificate2.setCertificateNo("s0002");certificate2.setStudent(student);Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();session.update(certificate1);session.update(certificate2);session.update(student);session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}
getTest:@Testpublic void updateTest() {Student student = new Student();student.setStudentId(2);student.setStudentName("赵四");Certificate certificate1 = new Certificate();certificate1.setCertificateId(3);certificate1.setCertificateName("cc");certificate1.setCertificateNo("s0001");certificate1.setStudent(student);Certificate certificate2 = new Certificate();certificate2.setCertificateId(4);certificate2.setCertificateName("dd");certificate2.setCertificateNo("s0002");certificate2.setStudent(student);Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();session.update(certificate1);session.update(certificate2);session.update(student);session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}
结果:Hibernate: select certificat0_.certificate_id as certific1_1_0_, certificat0_.certificate_name as certific2_1_0_, certificat0_.certificate_no as certific3_1_0_, certificat0_.student_id as student4_1_0_ from t_certificate certificat0_ where certificat0_.certificate_id=?3证书名称:ccHibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?学员名称:赵四
Student(one)对象被延迟加载了,many2one中,get支持延迟加载
loadTest:
@Testpublic void loadTest() {Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();Certificate certificate = (Certificate) session.load(Certificate.class, 3);System.out.println(certificate.getCertificateId());System.out.println("证书名称:"+certificate.getCertificateName());System.out.println("学员名称:"+certificate.getStudent().getStudentName());session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}
结果:
3Hibernate: select certificat0_.certificate_id as certific1_1_0_, certificat0_.certificate_name as certific2_1_0_, certificat0_.certificate_no as certific3_1_0_, certificat0_.student_id as student4_1_0_ from t_certificate certificat0_ where certificat0_.certificate_id=?证书名称:ccHibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?学员名称:赵四
many与one都被延迟加载
补充表结构及实体类源码:
t_student
t_certificate:
Student:
package com.demo.model;import java.io.UnsupportedEncodingException;/**学生信息双向 * @author wobendiankun *2014-10-19 下午08:54:29 */public class Student {private int studentId ;private String studentName ;private int age;public int getStudentId() {return studentId;}public void setStudentId(int studentId) {this.studentId = studentId;}public String getStudentName() {return studentName;}public void setStudentName(String studentName) {this.studentName = studentName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {String str="";if(studentName!=null){try {str=new String(studentName.getBytes("UTF-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}}return "Student [studentId=" + studentId + ", studentName="+ str + ", age=" + age + "]";}}
Certificate
package com.demo.model;/**从业资格证书 * @author wobendiankun *2014-10-25 上午11:43:21 */public class Certificate {/** * 证书id */private int certificateId ;/** * 证书名称 */private String certificateName;/** *证书编号 */private String certificateNo ;private Student student ;public int getCertificateId() {return certificateId;}public void setCertificateId(int certificateId) {this.certificateId = certificateId;}public String getCertificateName() {return certificateName;}public void setCertificateName(String certificateName) {this.certificateName = certificateName;}public String getCertificateNo() {return certificateNo;}public void setCertificateNo(String certificateNo) {this.certificateNo = certificateNo;}public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}}
0 0
- hibernate之5.many2one单向
- many2one 单向
- hibernate many2one
- hibernate ...many2one
- many2one单向关联
- Hibernate4映射之二: many2One单向映射(注解方式)
- Hibernate4映射之二: many2One单向映射(xml方式)
- Hibernate 映射关系Many2One
- hibernate之6.one2many单向
- hibernate之 8.one2one单向
- hibernate之 10.many2many单向
- Hibernate 的关系映射2 Many2One
- hibernate的Many2One、Many2Many等的使用
- Hibernate初学之一对一双向、单向
- hibernate关联映射之一对一单向关联
- Hibernate关联之 一对一主键单向关联
- Hibernate关联之 一对多外键单向关联
- hibernate初探之单向一对多映射
- 下沙的沙子有几粒?(杭电1267)
- Android属性(property)机制
- 符号编码-ASCII、Unicode、Unicode big endian、UTF-8之间的关系(转)
- OC的点语法
- Linux系统下如何查看及修改文件读写权限
- hibernate之5.many2one单向
- Android adb不是内部或外部命令 问题解决
- 【游戏之乐】中国象棋 让你学会位运算
- Java_Web Project_jdbc数据库连接底层;
- HDU-2087 剪花布条(kmp)
- 寻找一个字符串中连续出现次数最多的子串
- 【手把手教你做智能车】第二节-IAR新建工程及基本设置
- 推荐!国外程序员整理的C++资源大全
- 从Trie树(字典树)谈到后缀树