细粒度划分
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() ;
}
}
分享到:
相关推荐
NULL 博文链接:https://liuna718-163-com.iteye.com/blog/748089
复合主键映射 <br>通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用标签进行映射,其它属性采用正常映射
hibernate 无主键表映射资源说明: 1. 简单Demo 2. Demo对应的sql语句 3. 对应博客文档
hibernate复合主键设置,里面很全面的配置,可以拿到直接用
一个简单的复合主键的做关联类的例子
hibernate复合主键的实例,hibernate复合主键的实例。
hibernate3 注释生成复合主键或者嵌入式主键的方法及实例
如果使用Hibernate开发legacy的数据库应用,对于数据库表中有使用字符串作为主键或者使用复合主键情况,那么对于这些情况的影射档是比较麻烦的。该示例应用演示了两张表ITEM和CATEGORY_ITEM表有主外键关系,并且ITEM...
本章讲解Hibernate中对数据库复合主键的支持
J2EE\Hibernate技术\Hibernate中对数据库复合主键的支持.pdf
Hibernate复合主键.
请更名为 Hibernate复合主键.part2.rar
更名为 Hibernate复合主键.part3.rar
Hibernate一对多使用非主键关联设置,参看详细说明
关于Hibernate的各种主键生成策略与配置详解
复合主键映射用起来比普通的增加主键字段要复杂,这里我们就来共同学习Java的Hibernate框架中复合主键映射的创建和使用教程,需要的朋友可以参考下
常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略
java的细粒度权限和shiro权限校验 Spring + Struts + hibernate
demo代码; 博客地址:http://blog.csdn.net/smilefyx/article/details/48951933