hibernate3学习笔记(十二)|Component

 在MySQL中新建数据表User:

  1. CREATE TABLE user (
  2.     id INT(11) NOT NULL auto_increment PRIMARY KEY,
  3.     name VARCHAR(100) NOT NULL default '',
  4.     age INT,
  5.     email VARCHAR(100) NOT NULL
  6. );

按照最基本的映射策略的话,应该把User类设计成:

  1. package onlyfun.caterpillar; 
  2. public class User { 
  3.     private Integer id; 
  4.     private String name; 
  5.     private int age; 
  6.     private String email; 
  7.     ........ 
  8. }

然而由于业务上的需要,要把email字段升格成MailAddress类,例如:

  1. package com.hb3.pack_05.model;
  2. public class MailAddress {
  3.     private String email;
  4.     public MailAddress() {       
  5.     }
  6.     
  7.     public String getEmail() {
  8.         return email;
  9.     }
  10.     public void setEmail(String email) {
  11.         this.email = email;
  12.     }
  13.     
  14.     public void sendMail() {
  15.         System.out.println("Send mail to " + email);
  16.     }
  17. }

User.java

  1. package com.hb3.pack_05.model;
  2. public class User {
  3.     private Integer id;
  4.     private String name;
  5.     private Integer age;
  6.     private MailAddress mailAddress;
  7.     public User() {
  8.     }
  9.     public Integer getId() {
  10.         return id;
  11.     }
  12.     public void setId(Integer id) {
  13.         this.id = id;
  14.     }
  15.     public String getName() {
  16.         return name;
  17.     }
  18.     public void setName(String name) {
  19.         this.name = name;
  20.     }
  21.     
  22.     public Integer getAge() {
  23.         return age;
  24.     }
  25.     public void setAge(Integer age) {
  26.         this.age = age;
  27.     }
  28.     public MailAddress getMailAddress() {
  29.         return mailAddress;
  30.     }
  31.     public void setMailAddress(MailAddress mailAddress) {
  32.         this.mailAddress = mailAddress;
  33.     }
  34. }

User.hbm.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping>
  6.     <class name="com.hb3.pack_05.model.User" table="user">
  7.     
  8.         <id name="id" column="id" type="java.lang.Integer"> 
  9.             <generator class="native"/> 
  10.         </id>
  11.         
  12.         <property name="name" column="name" type="java.lang.String"/>
  13.         
  14.         <property name="age" column="age" type="java.lang.Integer"/>
  15.         
  16.         <component name="mailAddress" class="com.hb3.pack_05.model.MailAddress"> 
  17.             <property name="email" 
  18.                       column="email" 
  19.                       type="java.lang.String" 
  20.                       not-null="true"/> 
  21.         </component> 
  22.     </class> 
  23. </hibernate-mapping>

修改hibernate.cfg.xml文件:

......

<mapping resource="com/hb3/pack_05/model/User.hbm.xml" />

......

 

测试代码如下:

  1. package com.hb3.pack_05;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. import com.hb3.pack_05.model.MailAddress;
  7. import com.hb3.pack_05.model.User;
  8. public class BusinessService {
  9.     public static void main(String[] args) {
  10.         
  11.         Configuration config = new Configuration().configure();
  12.         SessionFactory sessionFactory = config.buildSessionFactory();      
  13.         Session session = sessionFactory.openSession();
  14.         MailAddress mailAddress = new MailAddress();
  15.         mailAddress.setEmail("bluelazysb@hotmail.com");
  16.                 
  17.         User user = new User();
  18.         user.setName("shenbin");
  19.         user.setAge(new Integer(28));
  20.         user.setMailAddress(mailAddress);
  21.         Transaction tx = session.beginTransaction();            
  22.         session.save(user);
  23.         session.flush();
  24.         tx.commit();
  25.         session.close();
  26.         
  27.         session = sessionFactory.openSession();
  28.         
  29.         user = (User) session.load(User.classnew Integer(1));
  30.         System.out.println(user.getAge()  + "/t" +
  31.                            user.getName() + "/t" +
  32.                            user.getMailAddress().getEmail());
  33.         user.getMailAddress().sendMail();
  34.         
  35.         
  36.         session.close();
  37.         sessionFactory.close();
  38.     }
  39. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值