Hibernate逍遥游记-第12章 映射值类型集合-003映射List(<list-index>)
2016-03-20 20:29
399 查看
1.
2.
3.
4.
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping > <class name="mypack.Monkey" table="MONKEYS" > <id name="id" type="long" column="ID"> <generator class="increment"/> </id> <property name="name" type="string" > <column name="NAME" length="15" /> </property> <property name="age" type="int" > <column name="AGE" /> </property> <list name="images" table="IMAGES" lazy="true"> <key column="MONKEY_ID" /> <list-index column="POSITION" /> <element column="FILENAME" type="string" not-null="true"/> </list> </class> </hibernate-mapping>
2.
package mypack; import java.io.Serializable; import java.util.List; import java.util.ArrayList; public class Monkey implements Serializable { private Long id; private String name; private int age; private List images=new ArrayList(); /** full constructor */ public Monkey(String name, int age,List images) { this.name = name; this.age=age; this.images = images; } /** default constructor */ public Monkey() { } /** minimal constructor */ public Monkey(List images) { this.images = images; } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public List getImages() { return this.images; } public void setImages(List images) { this.images = images; } }
3.
package mypack; import org.hibernate.*; import org.hibernate.cfg.Configuration; import java.util.*; import java.sql.*; public class BusinessService{ public static SessionFactory sessionFactory; static{ try{ Configuration config = new Configuration().configure(); sessionFactory = config.buildSessionFactory(); }catch(RuntimeException e){e.printStackTrace();throw e;} } public void saveMonkey(Monkey monkey){ Session session = sessionFactory.openSession(); Transaction tx = null; List results=new ArrayList(); try { tx = session.beginTransaction(); session.save(monkey); tx.commit(); }catch (RuntimeException e) { if (tx != null) { tx.rollback(); } throw e; } finally { session.close(); } } public Monkey loadMonkey(long id){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Monkey monkey=(Monkey)session.get(Monkey.class,new Long(id)); Hibernate.initialize(monkey.getImages()); tx.commit(); return monkey; }catch (RuntimeException e) { if (tx != null) { tx.rollback(); } throw e; } finally { session.close(); } } public void test(){ List images=new ArrayList(); images.add("image1.jpg"); images.add("image4.jpg"); images.add("image2.jpg"); images.add("image2.jpg"); images.add("image5.jpg"); Monkey monkey=new Monkey("Tom",21,images); saveMonkey(monkey); monkey=loadMonkey(1); printMonkey(monkey); } private void printMonkey(Monkey monkey){ System.out.println(monkey.getImages().getClass().getName()); List images=monkey.getImages(); for(int i=images.size()-1;i>=0;i--){ String fileName=(String)images.get(i); System.out.println(monkey.getName()+" "+fileName); } } public static void main(String args[]){ new BusinessService().test(); sessionFactory.close(); } }
4.
drop database if exists SAMPLEDB; create database SAMPLEDB; use SAMPLEDB; create table MONKEYS ( ID bigint not null, NAME varchar(15), AGE int, primary key (ID) ); create table IMAGES( MONKEY_ID bigint not null, POSITION int not null, FILENAME varchar(15) not null, primary key (MONKEY_ID,POSITION) ); alter table IMAGES add index IDX_MONKEY(MONKEY_ID), add constraint FK_MONKEY foreign key (MONKEY_ID) references MONKEYS(ID);
相关文章推荐
- Node.js数据流Stream之Readable流和Writable流
- Android_gridView应用实例
- Tkinter -- Toplevel
- 返回类型和return语句
- Redis集群部署3.0
- 分解质因数
- 构建之法阅读笔记02
- Memcache知识点梳理
- sed行编辑工具的基本用法
- 作为一个入门级计算机菜鸟,谈谈我对部分主流语言的态度
- 目标检测
- 笔试题目——研发工程师笔试题
- Android内存优化之防止OOM篇
- public private protected
- 个人所得税
- java.net.BindException: bind failed: EACCES (Permission denied)
- 上文程序的调优
- hdu1069 Monkey and Banana--DP
- line renderer 画线
- numpy 数组的体会