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

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

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

    午后星期午

    hibernate one-to-many many-to-one 雙向注解

    環(huán)境:
    Hibernate 3.3.1 
    Maven 3.0.4 
    MySQL 5.5.13 
    Myeclipse 8.6.1 

    建表語(yǔ)句:

    DROP TABLE IF EXISTS `t_company`;
    CREATE TABLE `t_company` (
      `companyId` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `companyName` varchar(30) NOT NULL,
      PRIMARY KEY (`companyId`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gb2312;
    
    INSERT INTO `t_company` VALUES ('1', 'Sun');
    INSERT INTO `t_company` VALUES ('2', 'Apache');
    DROP TABLE IF EXISTS `t_employee`;
    CREATE TABLE `t_employee` (
      `employeeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `employeeName` varchar(15) NOT NULL,
      `cid` int(10) unsigned NOT NULL,
      PRIMARY KEY (`employeeId`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gb2312;
    
    INSERT INTO `t_employee` VALUES ('1', 'Tom', '1');
    INSERT INTO `t_employee` VALUES ('2', 'Summ', '1');
    INSERT INTO `t_employee` VALUES ('3', 'Cat', '2');
    INSERT INTO `t_employee` VALUES ('4', 'Vinylon', '1');
    INSERT INTO `t_employee` VALUES ('5', 'Dog', '2');

    目錄結(jié)構(gòu):

    Employee.java

    package com.fancy.po;
    
    import javax.persistence.CascadeType;
    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.ManyToOne;
    import javax.persistence.Table;
    /**
     * -----------------------------------------
     * @文件: Employee.java
     * @作者: fancy
     * @郵箱: fancyzero@yeah.net
     * @時(shí)間: 2012-6-10
     * @描述: 實(shí)體類(lèi)
     * -----------------------------------------
     */
    /**
     * 下面只說(shuō)@ManyToOne,如需了解其他注解,
     * 可以參考上一篇:http://www.cnblogs.com/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html
     */
    @Entity
    @Table(name = "t_employee")
    public class Employee {
    
        private Integer employeeId;
        private String  employeeName;
        private Company company;
        
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Integer getEmployeeId() {
            return employeeId;
        }
        /**
         * @ManyToOne:多對(duì)一,cascade:級(jí)聯(lián),請(qǐng)參考上一篇
          * fetch = FetchType.LAZY,延遲加載策略,如果不想延遲加載可以用FetchType.EAGER
         */
        @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},fetch = FetchType.LAZY)
        @JoinColumn(name = "cid")
        public Company getCompany() {
            return company;
        }
        public String getEmployeeName() {
            return employeeName;
        }
        public void setEmployeeId(Integer employeeId) {
            this.employeeId = employeeId;
        }
        public void setEmployeeName(String employeeName) {
            this.employeeName = employeeName;
        }
        public void setCompany(Company company) {
            this.company = company;
        }
    }

     

    Company.java

    package com.fancy.po;
    
    import java.util.Set;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    /**
     * -----------------------------------------
     * @文件: Company.java
     * @作者: fancy
     * @郵箱: fancyzero@yeah.net
     * @時(shí)間: 2012-6-10
     * @描述: 實(shí)體類(lèi)
     * -----------------------------------------
     */
    /**
     * 下面只說(shuō)@OneToMany,如需了解其他注解,
     * 可以參考上一篇:http://www.cnblogs.com/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html
     */
    @Entity
    @Table(name = "t_company")
    public class Company {
    
        private Integer companyId;
        private String  companyName;
        private Set<Employee> employees;
        
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Integer getCompanyId() {
            return companyId;
        }
        /**
         * @OneToMany 與 OneToOne相似的也用mappedBy,參考了Employee
         * 可以參考上一篇
         */
        @OneToMany(mappedBy = "company")
        public Set<Employee> getEmployees() {
            return employees;
        }
        public String getCompanyName() {
            return companyName;
        }
        public void setCompanyId(Integer companyId) {
            this.companyId = companyId;
        }
        public void setCompanyName(String companyName) {
            this.companyName = companyName;
        }
        public void setEmployees(Set<Employee> employees) {
            this.employees = employees;
        }
    }

     

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.fancy</groupId>
      <artifactId>hibernate-annotation-many-to-one-example</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
      <name>hibernate-annotation-many-to-one-example</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
      
      <dependencies>
        <!-- hibernate jar -->
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>3.3.1.ga</version>
        </dependency>
        <!-- hibernate annotation jar -->
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-annotations</artifactId>
          <version>3.3.1.GA</version>
        </dependency>
        <!-- mysql -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.17</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      
    </project>


    Test.java

    package com.fancy.test;
    
    import java.util.Iterator;
    import java.util.Set;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.AnnotationConfiguration;
    import org.hibernate.cfg.Configuration;
    import com.fancy.po.Company;
    import com.fancy.po.Employee;
    /**
     * -----------------------------------------
     * @文件: Test.java
     * @作者: fancy
     * @郵箱: fancyzero@yeah.net
     * @時(shí)間: 2012-6-10
     * @描述: 測(cè)試類(lèi)
     * -----------------------------------------
     */
    public class Test {
    
        public static void main(String[] args) {
            //讀取hibernate配置,默認(rèn)讀取classpath下的hibernate.cfg.xml
            Configuration conf = new AnnotationConfiguration();    
            //構(gòu)建session工廠
             SessionFactory sessionFactory = conf.configure().buildSessionFactory();
            //打開(kāi)session
            Session session = sessionFactory.openSession();
            //開(kāi)始事務(wù)
             session.beginTransaction();
            // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            //test1(session);   //測(cè)試 1
            //test2(session);  //測(cè)試  2
            test3(session);   //測(cè)試   3
            // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            //提交事務(wù)
             session.getTransaction().commit();
            //關(guān)閉session工廠
             sessionFactory.close();
            //關(guān)閉session
            session.close();
        }
        public static void test1(Session session){
            Company company = (Company)session.get(Company.class, 1); //發(fā)出Company的select語(yǔ)句
             Set<Employee> employee = company.getEmployees();         //不發(fā)出Employee的select語(yǔ)句
             System.out.println("Company :" + company.getCompanyName());
            System.out.println("CountSum:" + employee.size()); //Employee初次被使用,發(fā)出select語(yǔ)句
             Iterator<Employee> it = employee.iterator(); //Employee不再發(fā)出select語(yǔ)句
             while(it.hasNext()){
              System.out.println("EmployeeName:" + it.next().getEmployeeName());
            }
        }
        public static void test2(Session session){
           Company company = (Company)session.get(Company.class, 2);//發(fā)出Company的select語(yǔ)句
            Set<Employee> employee = company.getEmployees();        //不發(fā)出Employee的select語(yǔ)句
            Iterator<Employee> it = employee.iterator(); //發(fā)出Employee的select語(yǔ)句
            Employee e = null;
           Boolean first = false;
           while(it.hasNext()){
              e = it.next();
              if(!first){
                  System.out.println("EmployeeId:[" + e.getEmployeeId() + "] information will be change");
                  e.setEmployeeName("fancy"); //更改雇員名字
                //  session.save(e);  //發(fā)出Employee的update語(yǔ)句,不發(fā)出Company的update語(yǔ)句
                    session.save(company);    //發(fā)出Employee的update語(yǔ)句,不發(fā)出Company的update語(yǔ)句
                    first = true;
                }
                System.out.println("EmployeeName:" + e.getEmployeeName());
            }
        }
        public static void test3(Session session){
            Employee employee = (Employee)session.get(Employee.class, 1);//發(fā)出Employee的select語(yǔ)句
             Company  company  = (Company)session.get(Company.class, 1);//發(fā)出Company的select語(yǔ)句
             company.setCompanyName("Oracle"); //更改公司名字
        //  session.save(company);//發(fā)出Company的update語(yǔ)句,不發(fā)出Employee的update語(yǔ)句
             session.save(employee);//發(fā)出Company的update語(yǔ)句,不發(fā)出Employee的update語(yǔ)句
        }
    }

     




       [ 轉(zhuǎn)載出處:http://www.tkk7.com/fancydeepin ]

    posted on 2013-12-31 13:34 午后星期午 閱讀(117) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JavaEE

    主站蜘蛛池模板: 19禁啪啪无遮挡免费网站| 精品国产综合成人亚洲区| 国产成人精品免费久久久久| 日韩欧美亚洲中文乱码| 亚洲精品在线播放| 亚洲成AV人在线观看天堂无码| 全部免费毛片在线| 巨胸喷奶水视频www网免费| 99re6免费视频| 亚洲免费人成在线视频观看 | 免费福利网站在线观看| 日本道免费精品一区二区| 曰批全过程免费视频免费看| 亚洲AV无码一区二区三区性色| 亚洲另类小说图片| 亚洲黄色免费在线观看| 亚洲av午夜福利精品一区人妖| 中文字幕亚洲天堂| 亚洲精品无码久久不卡| 免费日韩在线视频| 免费观看午夜在线欧差毛片| 在线观看免费宅男视频| 成人午夜大片免费7777| 成人免费看片又大又黄| 成人免费在线视频| 免费观看一级毛片| 永久免费看bbb| 国产成人免费片在线视频观看| 日本高清免费不卡在线| 国产青草视频在线观看免费影院| 在线播放免费人成视频在线观看| 成人毛片18女人毛片免费视频未 | 亚洲高清日韩精品第一区| 亚洲一区二区在线免费观看| 久久精品夜色国产亚洲av| 亚洲黄色一级毛片| 亚洲丝袜中文字幕| 亚洲综合小说另类图片动图| 亚洲精品无码中文久久字幕| 亚洲成av人片在线天堂无| 美女免费精品高清毛片在线视|