<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    基于JPA的CRUD(OneToMany)

    先建數據庫:
    use test;

    create table person
    (
    id 
    int primary key AUTO_INCREMENT,
    username varchar(
    20) not null,
    password varchar(
    20) not null
    );

    create table mail
    (
    id 
    int primary KEY AUTO_INCREMENT,
    email varchar(
    50) not null,
    pid 
    int null
    );
    select 
    * from person;
    select 
    * from mail;
    Person表和Mail表不存在物理方面的OneToMany關系,這
    種關系是通過Hibernate來維護的.
    hibernate.cgf.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
        
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        
    <session-factory>
            
    <property name="dialect">
                org.hibernate.dialect.MySQLDialect
            
    </property>
            
    <property name="show_sql">true</property>
            
    <property name="myeclipse.connection.profile">mysql</property>
            
    <property name="connection.url">
                jdbc:mysql:
    //localhost/test
            </property>
            
    <property name="connection.username">root</property>
            
    <property name="connection.password">root</property>
            
    <property name="connection.driver_class">
                com.mysql.jdbc.Driver
            
    </property>
            
    <property name="transaction.flush_before_completion">true</property>
            
    <mapping class="com.vo.Person" />
            
    <mapping class="com.vo.Mail" />
        
    </session-factory>
    </hibernate-configuration>

    Person.java:
    package com.vo;

    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;

    @SuppressWarnings(
    "serial")
    @Entity
    @Table(name 
    = "person")
    public class Person implements Serializable
    {
        
        
    private Integer id;
        
    private String username;
        
    private String password;
        
    private Set<Mail> mails = new HashSet<Mail>();
        @OneToMany(cascade
    =CascadeType.ALL,fetch=FetchType.LAZY) //映射為單一對多關系
        
    //@Basic(fetch=FetchType.LAZY) //和上面的fecth一樣的效果,都是延時初始
        @JoinColumn(name="pid")             //加入要映射的列(外鍵列)
        public Set<Mail> getMails()
        
    {
            
    return mails;
        }


        
    public void setMails(Set<Mail> mails)
        
    {
            
    this.mails = mails;
        }

        @Id
        @GeneratedValue(strategy 
    = GenerationType.AUTO)
        @Column(name
    ="id")
        
    public Integer getId()
        
    {
            
    return id;
        }


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


        
    public String getUsername()
        
    {
            
    return username;
        }

        @Column(name
    ="username",nullable=false)
        
    public void setUsername(String username)
        
    {
            
    this.username = username;
        }

        @Column(name
    ="password",nullable=false)
        
    public String getPassword()
        
    {
            
    return password;
        }


        
    public void setPassword(String password)
        
    {
            
    this.password = password;
        }

    }


    Mail.java:
    package com.vo;

    import java.io.Serializable;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;

    @SuppressWarnings(
    "serial")
    @Entity
    @Table(name 
    = "mail")
    public class Mail implements Serializable
    {
        
        
    private Integer id;
        
    private String email;

        @Id
        @GeneratedValue(strategy 
    = GenerationType.AUTO)
        @Column(name
    ="id")
        
    public Integer getId()
        
    {
            
    return id;
        }


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

        @Column(name
    ="email",nullable=false)
        
    public String getEmail()
        
    {
            
    return email;
        }


        
    public void setEmail(String email)
        
    {
            
    this.email = email;
        }

    }


    測試類:
    package com.test;

    import java.util.Iterator;
    import java.util.Set;

    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.AnnotationConfiguration;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;

    import com.vo.Mail;
    import com.vo.Person;

    public class PersonTest
    {
        
    private Session session;
        
    private Transaction transaction;

        @Before
        
    public void before()
        
    {
            session 
    = new AnnotationConfiguration().configure()
                    .buildSessionFactory().openSession();
            transaction 
    = session.getTransaction();
        }


        @After
        
    public void after()
        
    {
            session.close();
        }

        
        @Test
        
    public void save()
        
    {
            transaction.begin();
            Person person 
    = new Person();
            person.setUsername(
    "zdw");
            person.setPassword(
    "admin");
            
            Mail m1 
    = new Mail();
            m1.setEmail(
    "a@live.com");
            Mail m2 
    = new Mail();
            m2.setEmail(
    "b@live.com");
            
            person.getMails().add(m1);
            person.getMails().add(m2);
            session.save(person);
            transaction.commit();
        }

        
        
        @Test
        
    public void findById()
        
    {
            Person person 
    = (Person) session.load(Person.class1);
            Set
    <Mail> mails = person.getMails();
            
    if(mails.size() > 0)
            
    {
                
    for(Iterator<Mail> i = mails.iterator(); i .hasNext();)
                
    {
                    Mail m 
    = i.next();
                    System.out.println(m.getEmail());
                }

            }

        }

        
        
        @Test
        
    public void delete()
        
    {
            transaction.begin();
            Person person 
    = (Person) session.load(Person.class1);
            session.delete(person);
            transaction.commit();
        }

    }

        

    源碼可在我的網盤下載.
    點此下載

    posted on 2007-11-30 15:42 々上善若水々 閱讀(9172) 評論(0)  編輯  收藏 所屬分類: Hibernate

    主站蜘蛛池模板: 亚欧乱色国产精品免费视频| 一级毛片免费播放男男| 无码av免费一区二区三区| 亚洲女同成av人片在线观看| aa午夜免费剧场| 国产偷v国产偷v亚洲高清| 一个人看的www在线免费视频| 免费在线观看黄色毛片| 阿v免费在线观看| 国产精品亚洲玖玖玖在线观看| 国产高清对白在线观看免费91| 亚洲色成人网站WWW永久| 热99RE久久精品这里都是精品免费 | 日本人成在线视频免费播放| 亚洲AV中文无码乱人伦下载| 一级毛片免费观看不卡视频| 亚洲AV综合色区无码二区偷拍| 永久免费av无码网站韩国毛片| 亚洲国产美女精品久久久| www.亚洲精品| 免费无码av片在线观看| 亚洲最新在线视频| 日本高清免费aaaaa大片视频| 久久精品熟女亚洲av麻豆| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲a∨无码一区二区| 亚洲?v无码国产在丝袜线观看 | 久久无码av亚洲精品色午夜| 亚洲欧洲精品成人久久奇米网| 91国内免费在线视频| 亚洲毛片免费观看| 免费二级毛片免费完整视频| a级毛片高清免费视频| 亚洲午夜精品一区二区公牛电影院| 好大好深好猛好爽视频免费| 一级做a免费视频观看网站| 亚洲美女色在线欧洲美女| 国产免费黄色大片| 无码国产精品一区二区免费式芒果| jlzzjlzz亚洲jzjzjz| 亚洲精品无码99在线观看|