`
laodaobazi
  • 浏览: 277474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate细粒度划分与复合主键

阅读更多
细粒度划分

Person.hbm.xml配置文件

<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
                            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration.                   -->
<!-- Created Sat Nov 11 20:51:28 CST 2006                         -->
<hibernate-mapping package="org.lxh.hibernate">

<class name="Person" table="PERSON">
  <id name="id" column="ID" type="int">
   <generator class="assigned" />
  </id>
  <component name="name" class="org.lxh.hibernate.Name">
   <property name="firstname" column="FIRSTNAME" type="string" not-null="true" />
   <property name="lastname" column="LASTNAME" type="string" not-null="true" />
  </component>
  <component name="contact" class="org.lxh.hibernate.Contact">
   <property name="address" column="ADDRESS" type="string" not-null="true" />
   <property name="zipcode" column="ZIPCODE" type="string" not-null="true" />
   <property name="tel" column="TEL" type="string" />
  </component>
</class>

</hibernate-mapping>



Person.java

package org.lxh.hibernate;

public class Person {
// 在本类中要包含Name和Contact对象
private int id ;
private Name name ;
private Contact contact ;
public Contact getContact() {
  return contact;
}
public void setContact(Contact contact) {
  this.contact = contact;
}
public int getId() {
  return id;
}
public void setId(int id) {
  this.id = id;
}
public Name getName() {
  return name;
}
public void setName(Name name) {
  this.name = name;
}
}



Name.java

package org.lxh.hibernate;

public class Name {
private String firstname ;
private String lastname ;
public String getFirstname() {
  return firstname;
}
public void setFirstname(String firstname) {
  this.firstname = firstname;
}
public String getLastname() {
  return lastname;
}
public void setLastname(String lastname) {
  this.lastname = lastname;
}
}


Contact.java

package org.lxh.hibernate;

public class Contact {
private String address ;
private String zipcode ;
private String tel ;
public String getAddress() {
  return address;
}
public void setAddress(String address) {
  this.address = address;
}
public String getTel() {
  return tel;
}
public void setTel(String tel) {
  this.tel = tel;
}
public String getZipcode() {
  return zipcode;
}
public void setZipcode(String zipcode) {
  this.zipcode = zipcode;
}
}




复合主键
如果要实现复合主键,首先类应该先满足以下要求:
1、本类必须实现 Serializable接
2、复写 equals 和 hashCode 方法
· equals:对象比较方法
· hashCode:取得 Hash
对于 equals 和 hashCode方法的复写,可以使用第三方工具:commons-lang-1.0.1.jar



Person.hbm.xml文件

<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
                            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration.                   -->
<!-- Created Sat Nov 11 21:30:08 CST 2006                         -->
<hibernate-mapping package="org.lxh.hibernate02">

    <class name="Person" table="PERSON">
        <composite-id>
            <key-property name="name" column="NAME" type="string"/>
            <key-property name="phone" column="PHONE" type="string"/>
        </composite-id>
        <property name="age" column="AGE" type="int" />
    </class>
   
</hibernate-mapping>



Person.java
package org.lxh.hibernate02;

import java.io.Serializable;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

public class Person implements Serializable {
private String name;

private String phone;

private int age;

public boolean equals(Object obj) {
  // TODO 自动生成方法存根
  if (this == obj) {
   return true;
  }
  if (!(obj instanceof Person)) {
   return false;
  }
  Person p = (Person) obj;
  return new EqualsBuilder().append(this.name, p.name).append(this.phone,
    p.phone).append(this.age, p.age).isEquals();
}

public int hashCode() {
  // TODO 自动生成方法存根
  return new HashCodeBuilder().append(this.name).append(this.age).append(
    this.phone).toHashCode();
}

public int getAge() {
  return age;
}

public void setAge(int age) {
  this.age = age;
}

public String getPhone() {
  return phone;
}

public void setPhone(String phone) {
  this.phone = phone;
}

public String getName() {
  return name;
}

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

}



PersonOperate.java
package org.lxh.hibernate02;

import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

public class PersonOperate {
private Session session ;
public PersonOperate()
{
  this.session = new Configuration().configure().buildSessionFactory().openSession() ;
}
public void insert(Person p)
{
  this.session.save(p) ;
  this.session.beginTransaction().commit() ;
}
}


分享到:
评论

相关推荐

    hibernate复合主键配置和使用

    《Hibernate复合主键配置与使用详解》 在Java开发中,Hibernate作为一款强大的ORM框架,大大简化了数据库操作。然而,当我们面临复杂的数据表结构,尤其是涉及到复合主键时,如何在Hibernate中进行配置和使用就显得...

    Hibernate复合主键

    "Hibernate复合主键" Hibernate复合主键是指在 Hibernate 框架中使用复合主键来唯一标识一个实体。复合主键是指由多个字段组成的主键,用于唯一标识一个实体。在本例中,我们将通过一个简单的复合主键的做关联类的...

    hibernate 无主键表映射

    在Hibernate中,对无主键表的操作与普通实体基本相同,只是在保存和查询时需要传入整个复合主键对象。例如,创建一个新的订单: ```java OrderKey key = new OrderKey(); key.setCustomerId("123"); key.setOrderId...

    hibernate复合主键设置

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本教程将深入探讨如何在Hibernate中设置复合主键,并提供一个可直接使用的配置示例。 ...

    hibernate复合主键映射

    一旦完成,Hibernate就可以通过这个复合主键模型与数据库进行交互了。 总之,Hibernate通过`@Embeddable`和`@EmbeddedId`注解支持复合主键的映射,允许开发者根据业务需求灵活地设计数据模型。理解并掌握这一特性,...

    hibernate复合主键的实例

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 ...

    Hibernate复合主键.

    本篇文章将深入探讨Hibernate如何支持和管理复合主键。 一、理解复合主键 在数据库设计中,复合主键是一种特殊情况,当单个字段不能唯一标识表中的每一行时,可以使用两个或多个字段的组合来创建唯一的标识。例如...

    Hibernate中对数据库复合主键的支持.pdf

    ### Hibernate中对数据库复合主键的支持 #### 一、引言 在软件开发过程中,特别是在J2EE领域中,Hibernate作为一种流行的ORM(Object-Relational Mapping)框架被广泛使用。ORM框架的主要作用是将关系型数据库中的...

    hibernate3 注释生成复合主键或者嵌入式主键的方法及实例.doc

    这篇文档将介绍如何使用Hibernate注解来生成复合主键或嵌入式主键。 复合主键(Composite Key)是指由两个或更多个列共同构成的唯一标识,而嵌入式主键(Embedded Key)则是将主键字段嵌入到实体类内部。在不使用...

    演示怎样在Hibernate中使用复合主键

    如果使用Hibernate开发legacy的数据库应用,对于数据库表中有使用字符串作为主键或者使用复合主键情况,那么对于这些情况的影射档是比较麻烦的。该示例应用演示了两张表ITEM和CATEGORY_ITEM表有主外键关系,并且ITEM...

    Hibernate复合主键part1

    本章讲解Hibernate中对数据库复合主键的支持

    Hibernate一对多使用非主键关联设置

    在Hibernate中实现这种关系,我们不一定要依赖主键作为关联字段,而是可以使用非主键关联。下面我们将详细探讨如何在Hibernate中设置一对多非主键关联。 首先,我们需要理解在Hibernate中一对多关联的基本概念。在...

    Hibernate复合主键视频2

    请更名为 Hibernate复合主键.part2.rar

    Hibernate复合主键3

    更名为 Hibernate复合主键.part3.rar

    Java的Hibernate框架中复合主键映射的创建和使用教程

    在Java的Hibernate框架中,复合主键映射是一种处理多列组合成主键的情况,它使得在数据库表中由两个或更多个字段组成的主键能够被正确地映射到实体类。在使用复合主键时,我们需要遵循一定的步骤和规则。 首先,...

    hibernate使用主键关联的一对一关系

    在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来实现两个实体类之间的这种一对一绑定。下面我们将深入探讨这一主题。 首先,我们需要理解一对一关系的概念。在数据库中,一对一关系意味...

Global site tag (gtag.js) - Google Analytics