`

[SXT][WY]Hibernate11 其他映射

阅读更多

component映射

在hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid,
component可以成为是值对象(DDD)

采用component映射的好处:它实现了对象模型的细粒度划分,层次会更分明,复用率会更高

 

public class User {
 
 private int id;
 
 private String name;
 
 private Contact contact;

}

 

public class Contact {
 
 private String email;
 
 private String address;
 
 private String zipCode;
 
 private String contactTel;

}

 

User.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">
<hibernate-mapping>
 <class name="com.bjsxt.hibernate.User" table="t_user">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
  <component name="contact">
   <property name="email"/>
   <property name="address"/>
   <property name="zipCode"/>
   <property name="contactTel"/>
  </component>
 </class>
</hibernate-mapping>

 

public void testSave1() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   User user = new User();
   user.setName("张三");
   
   Contact contact = new Contact();
   contact.setAddress("xxxxx");
   contact.setEmail("xxx@rrr.com");
   contact.setZipCode("1111111");
   contact.setContactTel("9999999999");
   
   user.setContact(contact);
   
   session.save(user);
   session.getTransaction().commit();
  }catch(Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally {
   HibernateUtils.closeSession(session);
  }
 } 

 

 

复合(联合)主键映射

 

通常将复合主键相关的属性,单独放到一个类中
 * 此类必须实现序列化接口
 * 覆写hashcode和equals方法

 

public class FiscalYearPeriodPK implements Serializable {

 //核算年
 private int fiscalYear;
 
 //核算月
 private int fiscalPeriod;

 

@Override
 public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result + fiscalPeriod;
  result = prime * result + fiscalYear;
  return result;
 }

 @Override
 public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  final FiscalYearPeriodPK other = (FiscalYearPeriodPK) obj;
  if (fiscalPeriod != other.fiscalPeriod)
   return false;
  if (fiscalYear != other.fiscalYear)
   return false;
  return true;
 }

 

}

 

public class FiscalYearPeriod {
 
 private FiscalYearPeriodPK fiscalYearPeriodPK;
 
 //开始日期
 private Date beginDate;
 
 //结束日期
 private Date endDate;
 
 //状态
 private String periodSts;

 

}

 

<?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>
 <class name="com.bjsxt.hibernate.FiscalYearPeriod" table="t_fiscal_year_period">
  <composite-id name="fiscalYearPeriodPK">
   <key-property name="fiscalYear"/>
   <key-property name="fiscalPeriod"/> 
  </composite-id>
  <property name="beginDate"/>
  <property name="endDate"/>
  <property name="periodSts"/>
 </class>
</hibernate-mapping>

 

public void testSave1() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   FiscalYearPeriod fiscalYearPeriod = new FiscalYearPeriod();

   FiscalYearPeriodPK pk = new FiscalYearPeriodPK();
   pk.setFiscalYear(2008);
   pk.setFiscalPeriod(8);
   
   fiscalYearPeriod.setFiscalYearPeriodPK(pk);
   
   fiscalYearPeriod.setBeginDate(new Date());
   fiscalYearPeriod.setEndDate(new Date());
   fiscalYearPeriod.setPeriodSts("Y");
   
   session.save(fiscalYearPeriod);
   session.getTransaction().commit();
  }catch(Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally {
   HibernateUtils.closeSession(session);
  }
 }  
 
 public void testLoad1() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   FiscalYearPeriodPK pk = new FiscalYearPeriodPK();
   pk.setFiscalYear(2008);
   pk.setFiscalPeriod(8);
   
   FiscalYearPeriod fiscalYearPeriod = (FiscalYearPeriod)session.load(FiscalYearPeriod.class, pk);
   
   System.out.println(fiscalYearPeriod.getPeriodSts());
   
   session.getTransaction().commit();
  }catch(Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally {
   HibernateUtils.closeSession(session);
  }
 }   

 

分享到:
评论

相关推荐

    SXT--RBAC权限控制系统源码

    源码可能包含ORM(对象关系映射)框架的使用,如Hibernate或MyBatis,以及SQL查询语句。 通过分析SXT--RBAC权限控制系统的源码,我们可以深入了解RBAC模型的实现细节,如何有效地进行权限管理,以及如何确保系统的...

    sxt Video File

    除了核心的编码和解码技术,sxt格式可能还涉及到与其他多媒体格式的互操作性,比如MPEG-DASH、HLS(HTTP Live Streaming)等流媒体协议。这将帮助开发者了解如何将sxt文件适应不同的分发平台和设备。 此外,文档...

    sxt.rar_sxt

    标题 "sxt.rar_sxt" 暗示我们正在处理一个RAR压缩文件,其中包含一个名为"sxt"的项目。这个文件很可能是一个使用Visual C++(VC++)编写的程序,目的是实现无须额外驱动就能访问和操作摄像头的功能。在Windows环境中...

    mikrotik SXT 网桥点对点安装

    在进行mikrotik SXT网桥点对点安装时,我们首先需要了解网桥设备以及点对点连接的定义。网桥是一种网络设备,主要用于连接两个或多个局域网(LAN)段,允许不同网络段中的设备相互通信。在无线通信领域,点对点...

    struts2+spring+hibernate s2sh结合方式框架搭建开发

    Hibernate是Java世界中最流行的ORM(对象关系映射)框架,它允许开发者用Java对象来表示数据库中的表,通过简单的API进行CRUD(创建、读取、更新、删除)操作。Hibernate自动处理SQL的生成和执行,降低了数据库操作...

    SXT_ksxt_

    很抱歉,但根据您给出的信息,标题"‘SXT_ksxt_’"和描述"‘加热后软件恶霸vi热v贵部 将二姑vUI热 进欧冠ire’"似乎包含了一些难以理解的词汇,它们可能不是标准的IT术语或者描述。标签"‘ksxt’"看起来像是简写或...

    SXT shell_SXTshell_

    【SXT Shell:一个自动化安装脚本的探索】 在IT行业中,自动化是提高效率的关键,尤其是在服务器管理和维护中。SXT Shell(SXTshell)是一个专门为实现自动化部署和配置而设计的脚本工具。它旨在简化系统管理员的...

    sxt\weblogic\weblogic安装.avi

    sxt\weblogic\weblogic安装.avi sxt\weblogic\weblogic安装.avisxt\weblogic\weblogic安装.avi sxt\weblogic\weblogic安装.avi

    sxt_api_14.jar

    sxt_api_14.jar,便于下载可以使用

    sxt66329PPT模板.pptx

    "sxt66329PPT模板.pptx" 是一款商务用途的PPT模板,适用于各类专业场合。 1. **模板选择与定制**: - 商务模板通常采用简洁、专业且色彩协调的设计,以符合商业环境的正式氛围。"sxt66329" 模板可能包含一系列预设...

    JSP Tools

    - **hibernate_sxt_01_basic**: 这个示例可能展示了基本的Hibernate配置和实体类的使用,包括如何建立数据表映射、启动Session工厂以及进行CRUD操作。 - **hibernate_sxt_02_session**: Session是Hibernate的核心...

    sxt.zip_VBa_摄像头

    综上所述,"sxt.zip" 文件可能是一个包含了VBA代码的项目,该代码能够通过WIA或其他类似API与摄像头交互,实现图片的抓拍和保存。对于希望学习如何使用VBA操作摄像头的用户,这是一个有价值的资源。

    sxt+doswin1.zip

    正是在这种背景下,刘经理推荐的“sxt+doswin1.zip”压缩包显得尤为珍贵。这个压缩包中包含了两个软件工具,它们分别是SXTPSGJ_V2.1_XiTongZhiJia和doswin1,两者结合使用,为工程师们提供了一个在DOS环境下进行图像...

    pentair 5800 SXT软水机说明书

    ### Pentair 5800 SXT 软水机相关知识点 #### 一、产品概述 Pentair 5800 SXT软水机是一款高性能的家庭软水设备,适用于去除水中硬度矿物质(如钙、镁等),有效改善水质,减少水垢形成,保护家庭用水设备不受损害...

    sxt.rar_c#扇形图

    本资源"**sxt.rar_c#扇形图**"提供了一段代码,可以帮助开发者自定义绘制扇形统计图。 在C#中,我们可以利用GDI+(Graphics Device Interface Plus)库来实现图形绘制,包括扇形图。GDI+是.NET Framework的一部分,...

    sxt.rar_c# 摄像头实例

    标题 "sxt.rar_c# 摄像头实例" 提供了一个关于使用C#编程语言进行摄像头控制的项目实例。这个实例可能是一个基础的、可运行的代码示例,用于展示如何在C#环境中访问和操作摄像头设备。下面将详细讨论C#中摄像头控制...

    sxt.rar_数据结构

    本资源包“sxt.rar_数据结构”中包含了关于链表算法的程序实现,通过C++语言进行编写,旨在帮助我们深入理解和实践链表的操作。 链表不同于数组,它不是一块连续的内存空间,而是由一系列节点组成,每个节点包含...

    sxt.rar_sxt_手写_手写 识别_手写体 识别_文字识别

    《手写体文字识别技术深度解析》 在数字化时代的今天,手写体文字识别技术扮演着日益重要的角色,尤其在教育、文档管理、个人笔记数字化等领域。本文将深入探讨一个基于C++实现的手写体文字识别系统,以及相关的新...

    sxt.rar_bmp_matlab采集图片

    在IT领域,尤其是在计算机视觉和图像处理中,"sxt.rar_bmp_matlab采集图片"这一主题涉及到如何使用MATLAB编程语言从摄像头捕获实时图像并将其保存为BMP格式的图片。MATLAB是一款强大的数学计算软件,同时也提供了...

Global site tag (gtag.js) - Google Analytics