`
zcz123
  • 浏览: 158592 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类

hibernate的映射

阅读更多

集合映射

public class CollectionMapping {
	
	private int id;
	private String name;
	private Set setValue;
	private List listValue;
	private String[] arrayValue;
	private Map mapValue;
}	

 

	<class name="CollectionMapping" table="CollectionMapping">	
		<id name="id" type="integer">            
            <generator class="increment" />
        </id>
		<property name="name"/>
		<set name="setValue" >
			<key column="set_id" />
			<element type="string" column="set_value" />
		</set>
		<list name="listValue">
			<key column="list_id" />
			<list-index column="list_index"/>
			<element type="string" column="list_value"/>
		</list>
		<array name="arrayValue">
			<key column="array_id" />
			<list-index column="array_index"/>
			<element type="string" column="array_value" />
		</array>
		<map name="mapValue">
			<key column="map_id" />
			<map-key type="string" column="map_key" />
			<element type="string" column="map_value" />		
		</map>		
		
	</class>

 

public void testSave1() {
		Session session = null;
		CollectionMapping c = new CollectionMapping();
		
		c.setName("xxx");
		
		Set setValue = new HashSet();
		setValue.add("a");
		setValue.add("b");
		c.setSetValue(setValue);
		
		List listValue = new ArrayList();
		listValue.add("c");
		listValue.add("d");
		c.setListValue(listValue);
		
		String[] arrayValue = new String[]{"e", "f"};
		c.setArrayValue(arrayValue);
		
		Map mapValue = new HashMap();
		mapValue.put("k1", "v1");
		mapValue.put("k2", "v2");
		c.setMapValue(mapValue);		
		try {
			session = HibernateSessionFactory.getSession();
			session.beginTransaction();
			session.save(c);
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateSessionFactory.closeSession(session);
		}
	}	

组件映射

定义一个Contact类,User类,通过配置User映射文件

public class Contact {
	
	private String address;
	private String telephone;
	private String zipCode;
	private String email;
}

  

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

 

	<class name="mapping.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="telephone"/>	
			<property name="zipCode"/>	
		</component>
	</class>

 

	public static void main(String[] args) {
		Session session = null;
		try {
			session = HibernateSessionFactory.getSession();
			session.beginTransaction();
			User user = new  User();
			user.setName("xxxxx");
			Contact contact = new Contact();
			contact.setEmail("xxxx@qq.com");
			contact.setAddress("china");
			contact.setZipCode("24237483274");
			contact.setTelephone("13546546888");
			user.setContact(contact);
			session.save(user);		
			
		} catch (Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally{
			HibernateSessionFactory.closeSession(session);
		}
	}

 

复合(联合)主键映射

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

主要一个实现序列号接口的类,主类,映射文件

public class FiscalYearPeriodPK  implements Serializable  {
	
	
	private static final long serialVersionUID = 9033183366102420040L;
	
	//核算年
	private int fiscalYear;	
	//核算月
	private int fiscalPeriod;
	
	public int getFiscalPeriod() {
		return fiscalPeriod;
	}
	public void setFiscalPeriod(int fiscalPeriod) {
		this.fiscalPeriod = fiscalPeriod;
	}
	public int getFiscalYear() {
		return fiscalYear;
	}
	public void setFiscalYear(int fiscalYear) {
		this.fiscalYear = fiscalYear;
	}
	
	@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;

	
}
public void testSave1() {
		Session session = null;
		Random ran = new Random();
		try {
			session = HibernateSessionFactory.getSession();
			session.beginTransaction();
			for(int i=10;i<1000;i++){
				FiscalYearPeriod fiscalYearPeriod = new FiscalYearPeriod();

				FiscalYearPeriodPK pk = new FiscalYearPeriodPK();
				
				pk.setFiscalYear(ran.nextInt(i));
				pk.setFiscalPeriod(ran.nextInt(i*1000));
				
				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 {
			HibernateSessionFactory.closeSession(session);
		}
	}
 

 

分享到:
评论

相关推荐

    自动生成hibernate映射文件和实体类

    "自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...

    生成hibernate映射文件工具

    hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    Hibernate 映射文件自动生成

    【压缩包子文件的文件名称列表】:“hibernate映射文件自动生成.doc”很可能是这篇博文的文档形式,其中详细介绍了具体的操作步骤、使用工具或者自定义脚本,以帮助开发者理解并应用自动化的映射文件生成过程。...

    myeclipse自动生成hibernate映射文件

    Hibernate映射文件是XML格式的文件,它定义了数据库表与Java实体类之间的对应关系,包括字段映射、主键策略、关联关系等。映射文件让开发者无需编写SQL语句,就能通过Java对象进行数据库操作。 2. **MyEclipse ...

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    常用 Hibernate 映射配置说明.doc

    ### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...

    用MyEclipse自动生成hibernate映射文件和实体类

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    Myeclipse生成Hibernate映射文件

    而MyEclipse作为一款强大的Java集成开发环境,提供了对Hibernate的良好支持,包括自动生成Hibernate映射文件的功能。本文将详细介绍如何在MyEclipse中创建和使用Hibernate映射文件。 首先,理解Hibernate映射文件...

    Hibernate映射实例

    确保数据库与Hibernate映射文件一致,能正确地反映实体之间的关系。导入DBO到SQL Server数据库后,就可以通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作了。 在开发过程中,理解并熟练运用这些...

    Hibernate映射配置实例大全(详细总结)

    "Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...

    Hibernate映射树形结构

    标题“Hibernate映射树形结构”指的是如何用Hibernate来存储和操作具有层级关系的数据。 1. **单表映射策略**: Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`...

    Hibernate映射集合属性List

    本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...

    hibernate映射文件生成数据库

    Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java类与数据库表之间关系的配置文件。它包含了关于实体类与数据库表的字段对应、主键生成策略、关联关系等信息。通过这些映射文件,Hibernate...

    hibernate映射

    标题:“Hibernate映射” 描述详解: ### Hibernate映射——连接对象世界与数据库的桥梁 Hibernate是一种流行的Java持久层框架,其核心功能是提供一个高级的对象关系映射(ORM)工具,用于将Java对象模型映射到...

    myeclipse自动生成hibernate映射文件.

    下面我们将详细介绍如何在MyEclipse中自动生成Hibernate映射文件。 首先,我们需要建立数据库连接。在MyEclipse中,可以通过`Window`菜单打开`MyEclipse Database Explorer`视图。在这里,你可以创建新的数据库连接...

Global site tag (gtag.js) - Google Analytics