`
ttitfly
  • 浏览: 616367 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hibernate-------集合

阅读更多
Hibernate中的集合
Hibernate中的集合分为四类:
1.bag类:元素无序,可重复
2.set类:元素无序,不可重复
3.list类:元素有序,可重复
4.array类:数组
5.map类:映射关系
除bag类集合外,其它集合都可以在java api中找到对应的接口类,bag可以认为对应java中的List
Hibernate中将集合分为2类:
一是值集合,集合中存储的都是基本数据类型,包括String类型,及其它可识别的数据库类型
二是实体集合,集合中存储已经映射了的实体对象,反应对象间的关系。

以班级和学生为例:
建表sql语句:

CREATE DATABASE `hibernatetest`
CHARACTER SET 'utf8';

USE `hibernatetest`;

DROP TABLE IF EXISTS `classes`;
CREATE TABLE `classes` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `classId` int(11) ,
  foreign key (`classId`) references classes(`id`),
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Classes.java
package com.domain;

import java.util.ArrayList;
import java.util.List;

public class Classes implements java.io.Serializable {
	private Integer id;

	private String name;

	//Hibernate里的bag集合对应java里的List
	private List studentNames = new ArrayList();

	public Classes() {
	}

	public Classes(String name) {
		this.name = name;
	}


	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

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

	public List getStudentNames() {
		return studentNames;
	}

	public void setStudentNames(List studentNames) {
		this.studentNames = studentNames;
	}

}

Student.java:
package com.domain;

public class Student implements java.io.Serializable {

	private Integer id;

	private String name;

	public Student() {
	}

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

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

}

Classes.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">

<hibernate-mapping>
    <class name="com.domain.Classes" table="classes" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" not-null="true" />
        </property>
        <bag name="studentNames" table="student">
        	<!-- key对应的都是外键,其意思也就是拿该外键和<id>的主键值匹配,取集合 -->
        	<key column="classId"></key>
        	<element column="name" type="string"></element>
        </bag>
        
    </class>
</hibernate-mapping>


Student.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">

<hibernate-mapping package="com.domain" auto-import="true">
    <class name="Student" table="student" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
       
        <property name="name" type="java.lang.String">
            <column name="name" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

测试类:
package com.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.domain.Classes;
import com.domain.Student;

public class TestInsert {

	public static void main(String[] args) {
		Session session = HibernateSessionFactory.getSession();
		Transaction tx = session.beginTransaction();
		//定义班级0201班
		Classes classes = new Classes();
		classes.setName("0201new");
		classes.getStudentNames().add("studentnew1");
		classes.getStudentNames().add("studentnew2");
		session.save(classes);
		
		
		tx.commit();
		session.close();
		/**
		 执行的sql:
		 Hibernate: insert into classes (name) values (?)
		 Hibernate: insert into student (classId, name) values (?, ?)
         Hibernate: insert into student (classId, name) values (?, ?)
		 */


	}

}


分享到:
评论

相关推荐

    hibernate-3.3.2.GA-jar包集合

    hibernate-3.3.2.GA-jar包集合 这是给3.3.2.GA这个版本的jar,其他版本就不知道是不是用这个了。。

    hibernate-validator数据校验jar集合

    包含hibernate-valdator等用于数据校验所需要的基本jar包。

    spring-3.2.0+struts-1.3.10+hibernate-4.0.1

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    hibernate4源码集合

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate-search-analyzers-4.1.1.Final-sources.jar hibernate-search-engine-4.1.1.Final-sources.jar hibernate-search-orm-4.1.1.Final-sources.jar hibernate-...

    spring-3.2.0+struts-2.3.4+hibernate-4.0.1

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    hibernate-4.2.16.final,齐全的lib包

    最新的hibernate框架包,集合了hibernate框架的所有包,包括api文档。

    hibernate - 数据库持久化

    hibernate的知识:持久化类(Persistent Classes)、对象关系数据库映射基础(Basic OR Mapping)、集合类(Collections)映射、关联关系映射、拦截器与事件(Interceptors and events)等。

    spring-3.2.0+struts-1.3.10+hibernate-4.1.5

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-3.2.0+struts-1.3.10+hibernate-3.6.6

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-3.2.0+struts-2.3.4+hibernate-3.6.6

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-2.5.6+struts-2.3.4+hibernate-3.6.6

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-2.5+struts-1.3+hibernate-3.3

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-2.5.6+struts-1.3.10+hibernate-3.6.6

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-3.2.0+struts-2.3.4+hibernate-4.1.5

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-2.0.8+struts-2.0.9+hibernate-3.0

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    -hibernate-hb-05-map-collections-sortedmap:Hibernate地图集合-sortedmap

    我们使用@OrderBy,它指定检索集合时元素的顺序。 为了简化开发和测试,我们将使用自动配置 &lt; property xss=removed&gt;update 数据库表永远不会被删除。 当您要多次运行应用程序并保留现有数据时,此功能非常有用。...

    hibernate连接金仓数据库所需jar包集合lib.7z

    hibernate连接金仓数据库所需jar包集合。

    hibernate-jconsole-开源

    hibernate-jconsole是jconsole或visualvm的插件,它可以通过其JMX功能监视Hibernate状态。 该插件显示抓图和有关查询,实体,集合和缓存效率的详细信息。

    hibernate-generic-dao:自动从code.google.comphibernate-generic-dao导出

    使用(SOME,ALL,NONE)过滤集合和关联。 将单个过滤器与逻辑运算符(AND,OR,NOT)的任意组合组合。 按属性排序。 分页。 从客户端代码远程定义搜索。 将搜索结果转换为对象,列表,数组和地图 指定要急切...

    hibernate annotation 中文文档

    2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4.3.1. 访问类型 2.4.3.2. 公式 2.4.3.3. 类型 2.4.3.4. 索引 2.4.3.5. @Parent 2.4.3.6. 生成的属性 2.4.4. 继承 2.4.5. 关于单个关联关系...

Global site tag (gtag.js) - Google Analytics