<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

    主站蜘蛛池模板: 青娱乐免费视频在线观看| 国产在线观a免费观看| 美女被cao免费看在线看网站| 在线精品亚洲一区二区小说| xxxxx做受大片视频免费| 亚洲VA综合VA国产产VA中| 国产偷国产偷亚洲高清在线| 免费v片在线观看品善网| 添bbb免费观看高清视频| 国产伦精品一区二区三区免费迷| 国产av无码专区亚洲av毛片搜| 免费国产a国产片高清| av电影在线免费看| 国产亚洲成AV人片在线观黄桃| 久久久久国产精品免费网站| 亚洲精品福利网泷泽萝拉| 日韩免费精品视频| 亚洲国产aⅴ成人精品无吗| vvvv99日韩精品亚洲| a毛片免费观看完整| 亚洲国产日韩在线| 日韩av无码成人无码免费| 疯狂做受xxxx高潮视频免费| 亚洲无线一二三四区手机| 久久成人无码国产免费播放| 亚洲日本人成中文字幕| 少妇亚洲免费精品| 一级做a爰全过程免费视频| 97久久国产亚洲精品超碰热| 国产又大又粗又硬又长免费| 久久国产乱子精品免费女| 亚洲综合偷自成人网第页色| 亚洲国产aⅴ综合网| 99re这里有免费视频精品| 亚洲精品国产suv一区88| 精品国产亚洲一区二区在线观看| 2022久久国产精品免费热麻豆| 亚洲国产精品无码久久98| 国产∨亚洲V天堂无码久久久| 国产精品视频永久免费播放| 国产精品九九久久免费视频|