Hibernate笔记之5容器映射之List映射
2009-04-08 16:49
453 查看
容器映射:
容器常用于存储对象,将容器的关系映射到表主要有Set,List和Map三种。
例二,List映射:某个人有多本书,但是也可能有基本是相同的书:
首先创建数据库:
-- 删除表
drop table person ;
drop table books ;
-- 创建表
CREATE TABLE person
(
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL ,
name VARCHAR(20)
) ;
CREATE TABLE books
(
id INT ,
posit int ,
title VARCHAR(30) ,
foreign key (id) references person(id) on delete cascade
) ;
创建POJO类:Person
package wjr.hibernate.demo20_22.list;
import java.util.List;
public class Person {
private int id;
private String name;
private List books;
public List getBooks() {
return books;
}
public void setBooks(List books) {
this.books = books;
}
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;
}
}
然后创建映射文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="wjr.hibernate.demo20_22.list.Person" table="person" catalog="huanhuan">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" />
</property>
<list name="books" table="books">
<key column="id"></key>
<index column="posit"></index>
<element type="java.lang.String" column="title"></element>
</list>
</class>
</hibernate-mapping>
最后就是创建操作类了:
package wjr.hibernate.demo20_22.list;
import java.util.List;
import org.hibernate.Query;
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 per) {
this.session.save(per);
this.session.beginTransaction().commit();
}
// 根据ID查询人员信息
public Person queryById(int id) {
Person p = null;
String hql = "FROM Person AS p where p.id=?";
Query q = this.session.createQuery(hql);
q.setInteger(0, id);
List all = q.list();
if (all.size() > 0) {
p = (Person) all.get(0);
}
return p;
}
public void update(Person per)
{
this.session.update(per) ;
this.session.beginTransaction().commit() ;
}
/**
* @param args
*/
public static void main(String[] args) {
PersonOperate po = new PersonOperate();
// Person p = new Person();
// p.setName("LiXingHua");
// p.setBooks(new ArrayList());
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Oracle PL SQL编程");
// p.getBooks().add("WebSphere 开发指南");
//
// po.insert(p);
Person p = po.queryById(2);
// System.out.println("姓名:" + p.getName());
// Iterator iter = p.getBooks().iterator() ;
// while(iter.hasNext())
// {
// System.out.println(" |- "+iter.next()) ;
// }
p.getBooks().add("JSP 核心技术") ;
p.getBooks().add("JSP 核心技术") ;
p.getBooks().add("JSP 核心技术") ;
po.update(p) ;
}
}
容器常用于存储对象,将容器的关系映射到表主要有Set,List和Map三种。
例二,List映射:某个人有多本书,但是也可能有基本是相同的书:
首先创建数据库:
-- 删除表
drop table person ;
drop table books ;
-- 创建表
CREATE TABLE person
(
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL ,
name VARCHAR(20)
) ;
CREATE TABLE books
(
id INT ,
posit int ,
title VARCHAR(30) ,
foreign key (id) references person(id) on delete cascade
) ;
创建POJO类:Person
package wjr.hibernate.demo20_22.list;
import java.util.List;
public class Person {
private int id;
private String name;
private List books;
public List getBooks() {
return books;
}
public void setBooks(List books) {
this.books = books;
}
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;
}
}
然后创建映射文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="wjr.hibernate.demo20_22.list.Person" table="person" catalog="huanhuan">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" />
</property>
<list name="books" table="books">
<key column="id"></key>
<index column="posit"></index>
<element type="java.lang.String" column="title"></element>
</list>
</class>
</hibernate-mapping>
最后就是创建操作类了:
package wjr.hibernate.demo20_22.list;
import java.util.List;
import org.hibernate.Query;
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 per) {
this.session.save(per);
this.session.beginTransaction().commit();
}
// 根据ID查询人员信息
public Person queryById(int id) {
Person p = null;
String hql = "FROM Person AS p where p.id=?";
Query q = this.session.createQuery(hql);
q.setInteger(0, id);
List all = q.list();
if (all.size() > 0) {
p = (Person) all.get(0);
}
return p;
}
public void update(Person per)
{
this.session.update(per) ;
this.session.beginTransaction().commit() ;
}
/**
* @param args
*/
public static void main(String[] args) {
PersonOperate po = new PersonOperate();
// Person p = new Person();
// p.setName("LiXingHua");
// p.setBooks(new ArrayList());
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Java 核心技术");
// p.getBooks().add("Oracle PL SQL编程");
// p.getBooks().add("WebSphere 开发指南");
//
// po.insert(p);
Person p = po.queryById(2);
// System.out.println("姓名:" + p.getName());
// Iterator iter = p.getBooks().iterator() ;
// while(iter.hasNext())
// {
// System.out.println(" |- "+iter.next()) ;
// }
p.getBooks().add("JSP 核心技术") ;
p.getBooks().add("JSP 核心技术") ;
p.getBooks().add("JSP 核心技术") ;
po.update(p) ;
}
}
相关文章推荐
- 20,21,22-Hibernate容器映射技术(Set、List、Map) -mldn学习笔记 -hxzon
- Hibernate笔记之5容器映射之Set映射
- Hibernate容器映射技术(Set、List、Map)(1)
- 【学习笔记】Hibernate映射List、Map、数组、Set、Bag的具体操作
- Hibernate三种容器(List,Set,Map)映射技术之Map映射
- Hibernate笔记之5容器映射之Map映射
- nginx 源码学习笔记(十一)——基本容器——ngx_list
- 【Hibernate学习笔记】映射继承关系
- hibernate 实体关系映射笔记
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
- Hibernate映射List
- hibernate 关联映射学习备忘笔记
- Hibernate实体映射笔记
- hibernate中List一对多映射关系详解
- Hibernate实体映射笔记
- Hibernate视频学习笔记(4)多对一及一对一关联映射
- JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-003映射实体时的可选操作(<delimited-identifiers/>、PhysicalNamingStrategy、PhysicalNamingStrategyStandardImpl、、、)
- Hibernate学习笔记:list和iterater
- hibernate的list映射和map映射
- Hibernate List&Map&array&Set映射出错