本节内容:

1    简介组件属性

2    demo

1    简介组件属性:

<component  name = "address" class = "Address">

<property name = "postcard" column  = "POSTCARD"></property>

<property name = "address" column = "ADDRESS"></property>

</component>

hibernate 组件component标签 其实就是Student实体类中有Address对象。

2    demo:

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>
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
     <property name="connection.url">jdbc:mysql://localhost:3306/bendi</property>
     <property name="connection.username">root</property>
     <property name="connection.password"></property>
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
     
     <property name="show_sql">true</property>
     <property name="format_sql">true</property>
     <property name="hbm2ddl.auto">create</property>
  
  <mapping resource = "Student.hbm.xml"/>     
    </session-factory>
</hibernate-configuration>

Student.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-12-20 0:42:12 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.ddwei.student.Student" table="STUDENT">
        <id name="pid" type="int">
            <column name="PID" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" />
        </property>
        <property name="birthday" type="date">
<!--         <property name="birthday" type="time"> -->
<!--         <property name="birthday" type="timestamp"> -->
            <column name="BIRTHDAY" />
        </property>
<!--         <property name="address" type="java.lang.String"> -->
<!--             <column name="ADDRESS" /> -->
<!--         </property> -->
        <property name="picture" type="java.sql.Blob">
            <column name="Picture" />
        </property>
        <component name="address" class="com.ddwei.student.Address">
         <property name="postcode" column="POSTCODE"/>
         <property name="phone" column="PHONE"/>
         <property name="address" column="ADDRESS"/>
        </component>
       
    </class>
</hibernate-mapping>

StudentTest.java

package hibernate_001;

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.SQLException; import java.util.Date;

import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;

import com.ddwei.student.Address; import com.ddwei.student.Student;

public class StudentTest {    private SessionFactory sessionFactory;  private Session session;  private Transaction trasaction;    @Test  public void testSaveStudent(){ //  Student student =new Student(1,"周恩来","男",new Date(),"绍兴");//创建学生对象   Student student = new Student();   student.setName("秦始皇");   student.setSex("男");   student.setBirthday(new Date()); //  student.setAddress("阿房宫");   Address address = new Address("105789","18912345678","河北敦煌教区");   student.setAddress(address);   session.save(student);//会话保存学生对象进入数据库  }                                              @Before  public void init(){   //1  创建配置对象   Configuration config = new Configuration().configure();   //2  创建服务对象   ServiceRegistry serviceRe = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();      //3  创建会话工厂   sessionFactory = config.buildSessionFactory(serviceRe);      //4  打开会话   session = sessionFactory.openSession();   //5  创建事务   trasaction = session.beginTransaction();  }      @After  public void destroy(){   trasaction.commit();   session.close();   sessionFactory.close();  }

}

Student.java

package com.ddwei.student;

import java.sql.Blob; import java.util.Date;

public class Student {

// java beans 的设计原则  /**   * 1 公有的类 2 共有不带参数构造方法 3 私有属性 4 属性setter/getter方法   */

private int pid;// 学号  private String name;// 姓名  private String sex;// 性别  private Date birthday;// 出生日期  private Address address;// 家庭地址  private Blob picture;//相片

public Student() {

}

public Student(int pid, String name, String sex, Date birthday) {   // super();   this.pid = pid;   this.name = name;   this.sex = sex;   this.birthday = birthday; //  this.address = address;  }

@Override  public String toString() {   return "Student [pid=" + pid + ", name=" + name + ", sex=" + sex     + ", birthday=" + birthday + ", address=" + address + "]";  }

public int getPid() {   return pid;  }

public void setPid(int pid) {   this.pid = pid;  }

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;  }

public String getName() {   return name;  }

public void setName(String name) {   this.name = name;  }

public String getSex() {   return sex;  }

public void setSex(String sex) {   this.sex = sex;  }

public Blob getPicture() {   return picture;  }

public void setPicture(Blob picture) {   this.picture = picture;  }

}

Address.java

package com.ddwei.student;

//地址类 public class Address {    private String postcode;//邮编  private String phone;//电话  private String 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;  }    //无参构造方法  public Address(){     }        //有参构造方法  public Address(String postcode, String phone, String address) {   super();   this.postcode = postcode;   this.phone = phone;   this.address = address;  } }

hibernate课程 初探单表映射3-4 组件属性的更多相关文章

  1. hibernate课程 初探单表映射4-1 课程总结

    ORM是一种面向对象编程的方法,用这种方法来避免写数据库底层语言sql语句,这样有利于java的跨平台,扩展.维护.而hirenate是ORM的一种框架 hirbernate开发基本步骤编写配置文档h ...

  2. hibernate课程 初探单表映射3-1 hibernate单表操作简介

    本章简介: 1 单一主键 2 基本类型 3 对象类型 4 组件属性 5 单表操作CRUD实例

  3. hibernate课程 初探单表映射1-9 创建关系映射文件

    创建关系映射文件:(把实体类映射成一个表) 1 右键src==>new==>other==>hibernate==>hbm.xml==>Student==>Fini ...

  4. hibernate课程 初探单表映射3-3 对象类型

    本节简介: 1 简介对象类型(重点是音视频blob类型) 2 demo(对图片的写入数据库与读取) 1 简介对象类型 映射类型 java类型 标准sql类型 mysql类型 oracle类型 bina ...

  5. hibernate课程 初探单表映射2-7 hbm配置文件常用设置

    本节主要简介hbm配置文件以下内容: 1 mapping标签 2 class标签 3 id标签 1 hibbernate-mapping标签 schema 模式名称 catalog 目录名称 defa ...

  6. hibernate课程 初探单表映射2-4 transaction简介

    1 hibernate是非自动提交.如果transaction不写的话,会只创建表结构而不插入语句.   如果不写transaction而想实现插入的功能的话,需要重写session的dowork方法 ...

  7. hibernate课程 初探单表映射2-2 hibernate常用配置

    1 hibernate.cfg.xml常用配置: show_sql 控制台打印sql format_sql 控制台将sql排版 hbm2ddl.auto: create 删除表结构,重新建表并插值 u ...

  8. hibernate课程 初探单表映射2-1 hibernate进阶 本章简介

    本章简介,主要讲5大块的内容 1 hibernate.cfg.xml的配置 2 session 的简介 3 transaction的简介 4 session的详解 5 对象关系映射常用配置

  9. hibernate课程 初探单表映射1-11 通过hibernate API访问编写第一个小例子

    hibernate 业务流程 1 创建配置对象 Configuration config  = new  Configuration().configure(); 2 创建服务注册对象 Service ...

随机推荐

  1. centos7 安装mysql 5.7多实例

    一. Mysql多实例即一台服务器上运行多个Mysql服务进程 ,开启不同的服务端口,通过不同的socket 监听不同的服务端口来提供各自的服务. 二. Mysql多例有以下几个特点: 1.  有效利 ...

  2. AngularJs(Part 6)

    Overcomming same-origin policy restrictions with JSONP. AJAX has a restriction that it can only retr ...

  3. 【机器学习】推荐系统、SVD分解降维

    推荐系统: 1.基于内容的实现:KNN等 2.基于协同滤波(CF)实现:SVD → pLSA(从LSA发展而来,由SVD实现).LDA.GDBT SVD算是比较老的方法,后期演进的主题模型主要是pLS ...

  4. eos命令

    ps -ef|grep javakill -9 端口号cd /opt/sudytrue>nohup.outnohup eos7.5/startServer.sh &

  5. eigen3.3.3+opencv3.2跑orbslam3数据集出现usleep错误

    cd ORB_SLAM2 chmod +x build.sh ./build.sh的时候出现错误:/home/zhao/ORB_SLAM2-master/src/System.cc:236:28: e ...

  6. Maven核心知识

    什么是Maven? Maven是基于项目对象模型(POM), 可以通过一小段描述信息来管理项目的构建和文档的软件项目管理工具 目录结构如下 src main java package test jav ...

  7. 洛谷P1038 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  8. ICP备案接入商

    1. 什么是ICP备案中的接入商 ICP备案系统中所说的接入商:是指为您提供虚拟主机.服务器托管或者专线接入的公司. 现在ICP备案的原则是“谁接入谁负责”,接入商一般都有自己的电子平台和工信部对接, ...

  9. [Xcode 实际操作]五、使用表格-(4)设置UITableView单元格数据库源

    目录:[Swift]Xcode实际操作 本文将演示如何自定义表格的数据来源. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加 ...

  10. NodeJS什么都能做,为什么还要JAVA?

    这张图看起来简单而且很好理解,但没尝试过,会有很多疑问. SPA模式中,后端已供了所需的数据接口,view前端已经可以控制,为什么要多加NodeJS这一层? 多加一层,性能怎么样? 多加一层,前端的工 ...