(十四)Hibernate中的多表操作(4):单向一对一

案例一: 注解方式实现一对一

  • UserBean.java
package bean;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "user")
public class UserBean implements Serializable {

    @Id
    private Integer userid;
    private String username;
    private String password;
    private String sex;
    @Column(name = "is_admin")
    private String isAdmin;

    @OneToOne
    @JoinColumn(name="userid")  //一定要设置@JoinColumn,否则报错 ,表示用本表中的userid字段与cardBean中的主键关联
    private CardBean cardBean;

    public UserBean(Integer userid, String username, String password,
            String sex, String isAdmin) {
        super();
        this.userid = userid;
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.isAdmin = isAdmin;
    }

    public UserBean() {
    }

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

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

    public String getIsAdmin() {
        return isAdmin;
    }

    public void setIsAdmin(String isAdmin) {
        this.isAdmin = isAdmin;
    }

    public CardBean getCardBean() {
        return cardBean;
    }

    public void setCardBean(CardBean cardBean) {
        this.cardBean = cardBean;
    }

}
  • CardBean.java
package bean;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "card")
public class CardBean implements Serializable {

    @Id
    @Column(name = "card_id")
    private Integer cardId;
    @Column(name = "card_name")
    private String cardName;

    public CardBean(Integer cardId, String cardName) {
        super();
        this.cardId = cardId;
        this.cardName = cardName;
    }

    public CardBean() {
    }

    public Integer getCardId() {
        return cardId;
    }

    public void setCardId(Integer cardId) {
        this.cardId = cardId;
    }

    public String getCardName() {
        return cardName;
    }

    public void setCardName(String cardName) {
        this.cardName = cardName;
    }

}
  • 把含注解的bean添加到总配置文件中,


案例二: 使用映射文件xml实现一对一

  • CardBean.java
package bean;

/**
 * CardBean entity. @author MyEclipse Persistence Tools
 */

public class CardBean implements java.io.Serializable {

    // Fields

    private Integer cardId;
    private String cardName;

    // Constructors

    /** default constructor */
    public CardBean() {
    }

    /** minimal constructor */
    public CardBean(Integer cardId) {
        this.cardId = cardId;
    }

    /** full constructor */
    public CardBean(Integer cardId, String cardName) {
        this.cardId = cardId;
        this.cardName = cardName;
    }

    // Property accessors

    public Integer getCardId() {
        return this.cardId;
    }

    public void setCardId(Integer cardId) {
        this.cardId = cardId;
    }

    public String getCardName() {
        return this.cardName;
    }

    public void setCardName(String cardName) {
        this.cardName = cardName;
    }

}
  • UserBean.java
package bean;

/**
 * UserBean entity. @author MyEclipse Persistence Tools
 */

public class UserBean implements java.io.Serializable {

    // Fields

    private Integer userid;
    private String username;
    private String password;
    private String sex;
    private String isAdmin;

    private CardBean cardBean;

    // Constructors

    /** default constructor */
    public UserBean() {
    }

    /** minimal constructor */
    public UserBean(Integer userid) {
        this.userid = userid;
    }

    /** full constructor */
    public UserBean(Integer userid, String username, String password,
            String sex, String isAdmin) {
        this.userid = userid;
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.isAdmin = isAdmin;
    }

    // Property accessors

    public Integer getUserid() {
        return this.userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return this.username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return this.sex;
    }

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

    public String getIsAdmin() {
        return this.isAdmin;
    }

    public void setIsAdmin(String isAdmin) {
        this.isAdmin = isAdmin;
    }

    public CardBean getCardBean() {
        return cardBean;
    }

    public void setCardBean(CardBean cardBean) {
        this.cardBean = cardBean;
    }

}
  • 创建映射文件  UserBean.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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="bean.UserBean" table="user" catalog="test">
        <id name="userid" type="java.lang.Integer">
            <column name="userid" />
            <generator class="assigned"></generator>
        </id>
        <property name="username" type="java.lang.String">
            <column name="username" length="100" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="sex" />
        </property>
        <property name="isAdmin" type="java.lang.String">
            <column name="is_admin" />
        </property>

        <!-- 配置单向一对一 -->
        <one-to-one name="cardBean" class="bean.CardBean" ></one-to-one>
    </class>
</hibernate-mapping>
  • 创建映射文件  CardBean.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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="bean.CardBean" table="card" catalog="test">
        <id name="cardId" type="java.lang.Integer">
            <column name="card_id" />
            <generator class="assigned"></generator>
        </id>
        <property name="cardName" type="java.lang.String">
            <column name="card_name" />
        </property>
    </class>
</hibernate-mapping>
  • 把映射文件添加到总配置文件中
时间: 2024-10-29 19:07:28

(十四)Hibernate中的多表操作(4):单向一对一的相关文章

【读书笔记】C#高级编程 第二十四章 文件和注册表操作

(一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByRefObject--这是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据. FileSystemInfo--这是表示任何文件系统对象的基类. FileInfo和File--这些类表示文件系统上的文件. DirectoryInfo和Directory--这些类表示文件系统上的文件夹.

(十二)Hibernate中的多表操作(1):单向多对一

由"多"方可知"一"方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一: pojo类 public class Department { //公寓类,"一"方 private int id; private String name; //setter和getter方法.... } public class Employee { //员工类,"多"方 ,既然是多对一,多方知道一放的信

(十三)Hibernate中的多表操作(3):单向多对多

多对多的处理方式是,有一张中间表,中间表保存两个多方之间的关系.首先来看实际应用场景:在之前开发的系统中,应用了基于角色的控制访问,也就是RBAC模型,一个用户可能存在多种角色,一种角色也可能有多个用户,所以用户和角色之间是一个多对多的关系. 案例一:  使用注解方式实现多对多关系 RoleBean.java package bean; import java.io.Serializable; import java.util.HashSet; import java.util.Set; imp

(十一)Hibernate中的多表操作(1):单向一对多

一.单向一对多() 案例一(用XML文件配置): 一个会员(Member)可以有多个订单(Order),加载会员的时候自动加载订单,但是订单无法查看会员信息, public class Member { private String id; private String name; private Integer age; private Set<Order> orders = new HashSet<Order>(); //该Set集合里存放的是"多"方,加载

Spring整合Hibernate中自动建表

Spring整合Hibernate中自动建表 博客分类: JavaEE Java代码   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> <

(十四)hibernate逆向工程

一.hibernate逆向工程生成实体 介绍一个模型设计工具PowerDesigner,这个是j2ee开发必要的一个工具.一般在开发中先使用PowerDesigner 创建实体关系图即概念模型.建立了概念模型后生成特定数据库类型的物理模型,然后根据物理模型的创建表脚本创建库表:最后使用MyEclipse的hibernate特性针对表逆向生成实体类和映射文件.这样免去了编写实体和映射文件及其实体关系的麻烦. 二. 设计概念模型 relationship  一般的实体关系都可以使用,如果实体之间的关

十四、oracle 数据库管理--管理表空间和数据文件

一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括表空间.段.区和块.说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle块构成的这样的一种结构,可以提高数据库的效率. 三.表空间1.概念表空间用于从逻辑上组织数据库的数据.数据库逻辑上是由一个或是多个表空间组成的.通过表空间可以达到以下作用:1).控制数据库占

《Java从入门到放弃》入门篇:hibernate中的多表对应关系

hibernate中的对应关系其实就是数据库中表的对应关系, 就跟某些电影中的某些场景是一样一样滴. 比如可以是一男一女,还可以是一男多女, 更可以是多男一女,最后最后最后还可以是多男多女!!! 有些不纯洁的看官肯定已经开始想歪了吧···,我还是上图吧!请看下图 我说滴是这样滴一群人打群架滴场景,嘿嘿嘿··· 好吧,进入正题!!! 数据库中表与表之间的数据映射关系有一对一,一对多,多对一,多对多.例如: 一个身份证只能对应一个护照,一个护照也只能对应一个身份证,这就是一对一的关系 一个男人可以有

Hibernate入门(五)hibernate的级联(cascade)表操作

存在的意义 在实际做项目的时候,经常会遇到表与表之间的关联操作,比如一个班级里面有多个学生,一个部门有多个职员,这是一对多的关系,还有例如一个主题有一个作者,这是一对一,等,这时候就必须涉及到表的关联操作 一对多的单项关联 什么意思呢? 比如一个班级里面有多个学生,班级表关联学生表,属于一对多,但是学生表并不关联班级表,这个就属于单项的关联 只能从classes找到student,所以为单项关联 class.hbm.xml中的配置 <set name="students" cas