<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 々上善若水々 閱讀(9161) 評論(0)  編輯  收藏 所屬分類: Hibernate

    主站蜘蛛池模板: 免费人成视频x8x8入口| 成视频年人黄网站免费视频| 91麻豆国产自产在线观看亚洲| 国产成人精品免费视频网页大全| 一级黄色免费大片| 在线观看亚洲成人| 日日操夜夜操免费视频| 免费一本色道久久一区| 久久这里只精品国产免费10| 亚洲人成网站日本片| 国产精品无码一二区免费| 最近免费中文在线视频| a级片免费观看视频| 亚洲一区中文字幕在线电影网| 日本高清色本免费现在观看| 在线观看www日本免费网站| a国产成人免费视频| 和老外3p爽粗大免费视频| 亚洲精品中文字幕麻豆| 国产V亚洲V天堂无码久久久| 精品国产亚洲男女在线线电影| 亚洲一区二区三区免费视频| 久久大香伊焦在人线免费| 色播在线永久免费视频网站| 国产乱子伦精品免费视频| 美女被暴羞羞免费视频| 蜜臀亚洲AV无码精品国产午夜.| 亚洲一本一道一区二区三区| 亚洲乱码在线卡一卡二卡新区| 亚洲三级在线播放| 亚洲一级毛片免费看| 亚洲mv国产精品mv日本mv| 亚洲一区二区影视| 亚洲精品国产日韩| 亚洲女子高潮不断爆白浆| 久久精品亚洲综合一品| 国产大片线上免费看| 免费一级毛片在线观看| 亚洲一区视频在线播放| 国产亚洲精品免费视频播放| 国产亚洲av片在线观看16女人|