Hibernate学习五----------组件属性
© 版权声明:本文为博主原创文章,转载请注明出处
实例
1.项目结构

2.pom.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>org.hibernate</groupId>
<artifactId>Hibernate-Component</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Hibernate-Component Maven Webapp</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate.version>5.1.6.Final</hibernate.version>
</properties> <dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
</dependencies>
<build>
<finalName>Hibernate-Component</finalName>
</build>
</project>
3.Address.java
package org.hibernate.model;
public class Address {
private String postCode;// 邮编
private String phone;// 电话号码
private String address;// 地址
public Address() {
}
public Address(String postCode, String phone, String address) {
this.postCode = postCode;
this.phone = phone;
this.address = address;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
4.Student.java
package org.hibernate.model;
import java.util.Date;
public class Student {
private long sid;// 学号
private String sname;// 姓名
private String gender;// 性别
private Date birthday;// 生日
private Address address;// 地址
public Student() {
}
public Student(String sname, String gender, Date birthday, Address address) {
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
}
public long getSid() {
return sid;
}
public void setSid(long sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
5.Student.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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="org.hibernate.model.Student" table="STUDENT">
<id name="sid" type="java.lang.Long">
<column name="SID"/>
<generator class="native"/>
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME"/>
</property>
<property name="gender" type="java.lang.String">
<column name="GENDER"/>
</property>
<property name="birthday" type="date">
<column name="BIRTHDAY"/>
</property>
<component name="address" class="org.hibernate.model.Address">
<property name="postCode" column="POSTCODE"/>
<property name="phone" column="PHONE"/>
<property name="address" column="ADDRESS"/>
</component>
</class> </hibernate-mapping>
6.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> <!-- 配置SessionFactory信息 -->
<session-factory>
<!-- 配置数据库连接信息 -->
<property name="connection.username">root</property>
<property name="connection.password">***</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">
jdbc:mysql:///hibernate?useSSL=true&characterEncoding=UTF-8
</property> <!-- 常用配置 -->
<property name="hbm2ddl.auto">create</property>
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property> <!-- 引入映射文件 -->
<mapping resource="hbm/Student.hbm.xml"/>
</session-factory> </hibernate-configuration>
7.ComponentTest.java
package org.hibernate.test; import java.util.Date; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.model.Address;
import org.hibernate.model.Student;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; public class ComponentTest { private SessionFactory sessionFactory;
private Session session;
private Transaction transaction; @Before
public void before() { Configuration config = new Configuration().configure();// 获取配置对象
sessionFactory = config.buildSessionFactory();// 创建SessionFactory对象
session = sessionFactory.openSession();// 创建Session对象
transaction = session.beginTransaction();// 开启事务 } @After
public void after() { transaction.commit();// 提交事务
session.close();// 关闭Session
sessionFactory.close();// 关闭SessionFactory } @Test
public void testComponentSave() { Address address = new Address("100000", "18712345678", "北京市");// 创建Address对象
Student student = new Student("张三", "男", new Date(), address);// 创建Student对象
session.save(student);// 保存对象 } }
8.效果预览

参考:http://www.imooc.com/video/7741
Hibernate学习五----------组件属性的更多相关文章
- Hibernate的映射组件属性
组件属性 如果持久化类的属性并不是基本数据类型,也不是一个日期或者字符串常量,而是一个复合类型的对象,例如 private Name name; 那么这就是一个组件属性. 组件属性可以是任何普通的ja ...
- hibernate 学习 五 hibernate核心接口
一 Configuration接口 Configuration对象只存在于系统的初始化阶段.配置相关. 配置文件可以使用默认的路径,也可以指定路径. Configuration config = ne ...
- Dojo学习_组件属性
注意组件的引用顺序,避免出现对象不是构造函数或属性undefined的情况! 1.修改文本 require([ 'dojo/dom', 'dojo/domReady!' ], function (d ...
- hibernate学习五(关系映射多对一与一对多)
一.多对一 多对一(或者一对多):在学生与老师的情况下,一个老师可以教多个学生,但一个学生只能被教一个老师教: 对于类:在多的那方拥有一的那方的一个实体 二.修改student.java和teache ...
- Hibernate学习(五)Hibernate 多对多映射
说到多对多关系,印象最深刻的就是大学的选修课.一个学生可以选修多门课程,一门课程可以有多个学生选修,学生所选的每一门课程还有成绩.这个场景的E-R图如下: 对于多对多的关系,我们通常会抽出一张中间表( ...
- hibernate学习五 Hibernate补充
1 MiddleGenIDE可以生成映射类和映射文件. 2
- Hibernate学习---第五节:普通组件和动态组件
一.普通组件映射配置 1.创建组件类,代码如下: package learn.hibernate.bean; /** * 组件类 */ public class Phones { private St ...
- hibernate学习笔记(6)组件属性以及单表操作
组件属性:实体类中的某个属性属于用户自定义类的对象: 作用:将两个实体类合并在一起组建成一个表 在hbm.xml文件中配置: 格式: <component name="取的名字&quo ...
- hibernate课程 初探单表映射3-4 组件属性
本节内容: 1 简介组件属性 2 demo 1 简介组件属性: <component name = "address" class = "Address" ...
随机推荐
- 【bzoj2127】happiness 最大流
happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 2579 Solved: 1245[Submit][Status][Discuss ...
- artTemplate模板引擎的不同使用方式
arttemplate提供了两种不同的使用方式 一种是将模板写在页面内 <script id="test" type="text/html"> &l ...
- ios工程中一天只让显示一次的广告,或是弹出窗,如何实现
需求: 产品 代码实现: 在首页.m中 //一天之内只能批量邀请一次 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefault ...
- Jib构建你的第一个java镜像
jib Official:GoogleContainerTools/jib 本文示例完整demo github地址 github.com/moxingwang/- 想要了解并且使用jib,首先你得知道 ...
- 架设自己的SMTP服务器
原文发布时间为:2010-12-13 -- 来源于本人的百度文章 [由搬家工具导入] 发现用自己的电脑架设SMTP服务器,发送速度可真快.... 现在网络流行收费,Email当然首当其冲 ...
- js scrollTop, 滚动条操作
设置页面加载时滚动条自动滚到底的方法: jQuery: 复制代码 代码如下: $(function(){ var h = $(document).height()-$(window).height() ...
- zoj 3471 Most Powerful (有向图)最大生成树 状压dp
题目链接 题意 \(N\)种气体,\(i\)气体与\(j\)气体碰撞会: 产生\(a[i][j]\)的威力: 导致\(j\)气体消失. 求产生威力之和的最大值. 思路 和前几题找图上路径的题不一样,该 ...
- 使用vim修改和查看16进制文件
使用前的准备工作,如果没有安装,使用命令安装: pacman -S vim 使用vim的十六进制功能查看和编辑文本文件,创建测试文件,使用命令如下: vim test.txt 进入“插入”模式,使用命 ...
- python之wxPython菜单使用详解
import wx APP_EXIT=1 #定义一个控件ID class Example(wx.Frame): def __init__(self, parent, id, title): super ...
- pyinstaller打包exe程序各种坑!!!
pyinstaller打包python成exe可执行程序,各种报错,各种坑,在次记录下 一.pyinstaller打包报错for real_module_name, six_moduleAttribu ...