`

Hibernate之第4解之-hibernate_集合映射

阅读更多

hibernate的集合映射demo:

前提介绍:

      书籍Book【id,name,authors】,authors可能有N个,所以这里用set表示;

      实体类一个Book;表呢有两个:tbook、tauthors;

1:model:

package model;

import java.util.Set;

public class Book {
	private int id;
	private String name;
	private Set<String> authors;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Set<String> getAuthors() {
		return authors;
	}
	public void setAuthors(Set<String> authors) {
		this.authors = authors;
	}
}

 2:Book的映射文件:hbm.xml

	<class name="Book" table="TBook" lazy="false">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name" column="bookName"/>
        <set name="authors" table="TAuthors">
        	<key column="id" />
        	<element column="authorName" type="string" not-null="true" length="30"/>
        </set>
    </class>

     这里有两个地方需要稍微注意:

    *写明not-null="true"生成tauthors表时才会自动为你生成主键【id,authorName】,否则表没有主键;

    *指定length="30"如果不指定,会有以下ERROR,主键生成失败;所以要指定小些;

 not-null="true" length="30"
1218 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: create table TAuthors (id integer not null, topicName varchar(255) not null, primary key (id, topicName))
1218 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Specified key was too long; max key length is 767 bytes

 3.DAO:

/** add */
	public void addPerson(Book p){
		Session session=null;
		Transaction tran=null;
		try {
			session=HibernateUtil.getSession();
			tran=session.beginTransaction();
			session.save(p);
			tran.commit();
		} catch (HibernateException e) {
			tran.rollback();
			e.printStackTrace();
		}finally{
			if(session!=null && session.isOpen()){
				session.close();
			}
		}
	}

 4:service:

        BookDao dao=new BookDao();
	/** add */
	public void add(Book p){
		dao.addPerson(p);
	}

 5:JUnit 测试:

	@Test public void testAdd() {
		Book p=new Book();
		p.setName("《Java核心技术》");
		Set<String> authors=new HashSet<String>();
		authors.add("Cay S.Horstmann");
		authors.add("Gary Cornell");
		p.setAuthors(authors);
		manager.add(p);
	}

 6:最终数据库结果:

mysql> select * from tbook;
+----+------------------+
| id | bookName         |
+----+------------------+
|  1 | 《Java核心技术》 |
+----+------------------+
1 row in set

mysql> select * from tauthors;
+----+-----------------+
| id | authorName      |
+----+-----------------+
|  1 | Cay S.Horstmann |
|  1 | Gary Cornell    |
+----+-----------------+
2 rows in set

 表的ddl语句:

CREATE TABLE `tbook` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bookName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
--------------------------------------------------------------------
CREATE TABLE `tauthors` (
  `id` int(11) NOT NULL,
  `authorName` varchar(30) NOT NULL,
  PRIMARY KEY (`id`,`authorName`),
  KEY `FK529261547AAF8BC9` (`id`),
  CONSTRAINT `FK529261547AAF8BC9` FOREIGN KEY (`id`) REFERENCES `tbook` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 That's all;

0
2
分享到:
评论

相关推荐

    hibernate-3.2.6-src_a.rar

    4. **第二级缓存**:Hibernate支持缓存策略,其中第二级缓存由`Cache`接口实现,通过插件如Ehcache,可以在多个`SessionFactory`间共享数据,提高性能。 5. **事件监听与拦截器**:`Event`与`Interceptor`接口提供...

    hibernate通用jar包20个

    通常这样的集合会包括Hibernate框架的基本库,如hibernate-core.jar(包含基本ORM功能)、hibernate-entitymanager.jar(用于JPA支持)、hibernate-validator.jar(用于输入验证)以及各种依赖的第三方库,如slf4j...

    hibernate list集合映射

    **标题:“Hibernate List集合映射”** 在Java的持久化框架Hibernate中,集合映射是将数据库中的表与Java对象的集合属性关联的过程。List集合映射是其中常见的一种方式,它允许我们将数据库中的一组相关记录映射到...

    hibernate-3.3.2.GA-jar包集合

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程语言(如Java)来处理数据库操作,极大地简化了数据库应用程序的开发。在这个“hibernate-3.3.2.GA-jar包集合”中,我们聚焦的是...

    hibernate-release-5.0.7.Final的所有jar包

    Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个`hibernate-release-5.0.7.Final`版本中,包含了所有相关的jar包,为开发者...

    精通hibernate3.0(第三版).rar

    9. 高级特性:探讨Hibernate的高级功能,如关联映射、集合映射、继承映射、多态查询、懒加载和代理对象等。 10. 经典实例:书中提供的实战案例可以帮助读者将理论知识应用到实际项目中,加深理解和记忆。 通过阅读...

    hibernate_persistence第17-23章书中代码

    《hibernate_persistence》是关于Hibernate持久化技术的一本书,涵盖了从第17章到第23章的代码示例。这些章节的代码主要涉及了Hibernate在数据库操作中的核心功能,包括查询条件设置、高级查询、数据源配置以及与...

    hibernate-3.2 jar包

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程方式来操作数据库,从而简化了Java应用程序中的数据访问层。在“hibernate-3.2 jar包”中,包含了一系列用于支持Hibernate 3.2版本...

    hibernate最新版jar包(全)

    标题"hibernate最新版jar包(全)"表明这是一个包含Hibernate最新版本所有必需的JAR文件的集合。Hibernate是一个流行的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者能更方便地进行数据库操作。 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 ...

    hibernate开发jar包集合

    Hibernate是一款强大的Java持久化框架,它为Java开发者提供了一种对象关系映射工具,使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据库操作。在Java应用开发中,特别是企业级应用开发,Hibernate被...

    Hibernate_3.2.0_Reference_zh_CN.rar hibernate中文api

    12. **集合映射**:通过`@OneToMany`、`@ManyToOne`、`@OneToOne`、`@ManyToMany`等注解,实现对象间的关联关系,如一对多、多对一、一对一和多对多。 13. **级联操作(Cascade)**:通过`cascade`属性,可以设置当...

    hibernate-distribution

    标题"hibernate-distribution"指的是Hibernate的一个发行版,这通常意味着它是一个包含了所有必要的文件和库,供用户在他们的开发环境中使用Hibernate的集合。描述中的"hibernate-distribution-3.3.2.GA-dist"进一步...

    hibernate-release-4.2.4.Final.zip

    4. **JAR包**:Java Archive (JAR) 文件是Java平台特有的归档格式,用于集合多个类文件、资源文件和其他相关文件。在Hibernate中,JAR包包含了框架的实现和库,如核心API、持久化引擎、C3P0连接池等。 5. **Eclipse...

    Hibernate_3.2.0_Reference_zh_CN

    12. **集合映射**:讲解了如何将Java集合类如List、Set和Map映射到数据库表的行。 13. **性能优化**:提供了关于提高Hibernate应用性能的建议,如批处理、延迟加载、缓存策略优化等。 14. **事件监听器和拦截器**...

    hibernate教程-从入门到精通-第4篇(共四篇)共2

    【hibernate教程-从入门到精通-第4篇(共四篇)共2】这篇教程是关于Java持久层框架Hibernate的学习指南,旨在帮助初学者深入理解并掌握Hibernate的核心概念和技术。Hibernate作为一款强大的对象关系映射(ORM)工具,...

    hibernate-distribution-3.6.7.Final-dist.zip

    Hibernate支持第二级缓存和查询缓存,可以显著提高性能。例如,使用Ehcache作为缓存提供者,通过配置文件启用缓存服务。 六、事务管理 Hibernate支持JTA(Java Transaction API)和JDBC事务管理。开发者可以通过...

    hibernate应用[包括示例,映射,主键自增,各种查询操作方式以及配置文档以及 Annotation示例]

    - **Hibernate集合映射之Map-----element映射实体类型值.doc、Hibernate集合映射之Map-----element映射基本类型值.doc**:讨论了如何映射Java集合到数据库表,特别是使用Map类型和Element元素。 - **Hibernate with ...

Global site tag (gtag.js) - Google Analytics