Hibernate 、多表关联映射-组件关联映射(component)
组件关联映射可以将一些简小的数据与主题放在一个表中,例如firstName 和LastName这两个结合在一起可以组成一个名字,但是再分别将这两个再建一个表就不太合适了,这个时候可以用到组件关联映射;
hibernate.cfg.xml:
<hibernate-configuration><session-factory name="sessionFactory"><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password"></property><property name="hibernate.show_sql">true</property><property name="hibernate.format_sql">true</property><property name="hibernate.hbm2ddl.auto">update</property><mapping resource="cn/hbm/Person2.hbm.xml" /></session-factory>
</hibernate-configuration>
Person:
public class Person2 {private Integer id;private Name name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Name getName() {return name;}public void setName(Name name) {this.name = name;}}
name:
public class Name {private String firstName;private String lastName;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}
}
hbm.xml
<hibernate-mapping package="cn.model"><class name="Person2" table="PERSON2"><id name="id" column="ID"><generator class="native"></generator></id><component name="name"><property name="firstName" column="FIRST_NAME" /><property name="lastName" column="LAST_NAME" /></component></class>
</hibernate-mapping>
public void saveZujian(){Session session=null;Transaction tran=null;try{Person2 person=new Person2();Name name=new Name();name.setFirstName("jack");name.setLastName("tomson");person.setName(name);session=HibernateSessionFactory.getSession();tran=session.beginTransaction();session.save(person);tran.commit();}catch(Exception e){if(session!=null){session.close();}}}
执行保存以后可看到生成的SQL
确实创建在一张表中了。
执行查询:
public Person2 getPersonById(Integer id){Session session=null;try{session=HibernateSessionFactory.getSession();return (Person2)session.get(Person2.class, id);}catch(Exception e){if(session!=null){session.close();}}return null;}
Hibernate 、多表关联映射-组件关联映射(component)相关推荐
- Hibernate多表关联查询记录映射
通常情况下,单表的查询比较简单,在hibernate中可以将查询记录直接映射到具体的实体类,因为通常会通过JPA注解将数据表和实体类建立映射关系,在查询数据,保存数据时,可以直接操作java实体类,但 ...
- hibernate mysql 关联查询_Hibernate关联映射及高级查询
一.Hibernate中的关联关系 1.1.单向一对多关联关系 按照以下步骤配置hibernate中持久化类的一对多对象关联: (1).持久化类添加关联类的相关属性及getter/setter方法. ...
- Hibernate一对多单向关联和双向关联映射方法及其优缺点
一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同. 它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的 ...
- Mybatis-plus:单表使用关联查询+ResultMap结果映射
Mybatis-plus:单表使用关联查询+ResultMap结果映射 一:数据表与实体类 二:mapper与mapper.xml 三:service 四:控制器 五:返回结果 一:数据表与实体类 数 ...
- Hibernate 多表关联
hibernate中可以一次对多个表进行数据插入,这种插入类似 Hibernate的关联映射关系有: 多对一 ---- many-to-one 一对多 ---- one-to-many 一对一 --- ...
- Hibernate第九篇【组件映射、继承映射】
前言 到目前位置,我们已经学习了一对一.一对多.多对一.多对多映射了-既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射 Java主要的类主要有 ...
- Hibernate一对一关联------主键关联(亲测成功)
1.创建两个实体(Company.java和Login.java)代码如下: 1 package wck.stu.vo.onetoonein; 2 3 public class Company { 4 ...
- hibernate注释映射_Hibernate一对一映射示例注释
hibernate注释映射 Today we will look into One to One Mapping in Hibernate. We will look into Hibernate O ...
- hibernate one2one 唯一外键关联(双向关联)
hibernate的一对一唯一外键关联映射(双向关联 Person <------->IdCard) 一对一唯一外键关联采用<one - to -one>标签映射,必须指定标签 ...
最新文章
- 平均年薪35W,2018年大数据AI发展趋势分析
- Python读取文件编码及内容
- pythonurllib模块-urllib库详解 --Python3
- Nginx uWsgi Django环境搭建
- selenium python 安装
- JDK 6中新增的Java Console类功能概览
- ntce服务器不稳定,当心!你的教师资格证成绩失效了!| 服务
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
- Composer基础应用1
- 芯烨 XP-350b 打印机驱动
- hbase的协处理器
- OpenCV 安装配置 Jupyter Notebook
- 每个系统都在用的appid、appkey、appsecret都是什么意思?
- 清华大学计算机科学学院刘钊,姚 骏-清华大学生命学院
- Pandas学习——分组
- Springboot - 处理LocalDateTime的入参和出参格式
- 践行支付为民 线上支付开通ETC线上申卡、支付
- 基于opencv的 SNR,GAMMA,色差,饱和度,曝光误差,白平衡误差的自动化算法开发
- php图片处理案例,使用GD、ImageGick与PHP框架的图片处理技术
- MES管理系统中的批次管理,贯穿了生产制造的整个流程