Hibernate 의 한 쌍 이상 의 관계 조회

18848 단어 hibernate
Hibernate 의 한 쌍 이상 의 관계 조회
한 쌍 이 많 든 많 든 한 쌍 이 많 든 다른 실체 류 에서 하나의 실체 류 대상 속성 을 설명 하여 데 이 터 를 밀봉 한다.
조회 한 여러 표 의 데 이 터 를 이 실체 류 의 대상 에 밀봉 하고 설정 을 통 해 이 루어 집 니 다.
배치 절차
  • 여러 개의 표 데 이 터 를 저장 할 수 있 는 실체 류 를 만 들 고 실체 류 는 데이터 뱅 크 의 관계 에 따라 매 핑 관 계 를 구축한다
  • .
    Customer 의 실체 클래스 에 하나의 속성 을 추가 합 니 다.
    //                 ,          
    private Set linkmans =new HashSet<>();
    
    public Set getLinkmans() {
        return linkmans;
    }
    public void setLinkmans(Set linkmans) {
        this.linkmans = linkmans;
    }

    조회 한 여러 표 의 데 이 터 를 이 실체 류 의 대상 에 밀봉 하고 설정 을 통 해 이 루어 집 니 다.
    Customer 의 맵 파일 에 관 계 를 설정 하면 우리 가 수 동 으로 데 이 터 를 밀봉 하지 않 아 도 됩 니 다.
    메모: 1. set 라벨 을 설정 하 는 이 유 를 알 아야 합 니 다. 고객 실체 류 는 set 집합 을 사용 하기 때 문 입 니 다!1. 외부 키 를 설정 해 야 하 는 이 유 를 알 아야 합 니 다. 모든 데이터베이스 관 계 는 외부 키 를 통 해 이 루어 지기 때 문 입 니 다.
  • set 태그: 실체 클래스 를 설정 하 는 set 집합
  • name: * set 집합 을 지정 하 는 속성 명 *, 속성 명 을 통 해 대응 하 는 설정 은 어느 set
  • 에 속 합 니까?
  • key 태그: 두 표 와 연 결 된 외부 키 를 설정 하 는 데 사용 합 니 다.
  • column: 외부 키 의 필드 이름 설정
  • 
    
    <set name="linkmans">
        
        <key column="lkm_cust_id">key>
        
        <one-to-many class="com.entity.Linkman" />
    set>
    

    그리고 hbm 에 linkman 의 mapping 맵 파일 을 씁 니 다.
    메모: Hibernate. cfg. xml 에 불 러 오 는 것 을 잊 지 마 세 요.
    테스트 코드:
    //  :  ID          ,                 !
    @Test
    public void get(){
    
        //1.      
        Session session = HibernateUtils.getSession();
    
        //2.  OID    
        Customer customer = session.get(Customer.class, 2L);
        System.out.println("   :"+customer.getCustName());
    
        Set linkmans = customer.getLinkmans();
        for(Linkman linkman:linkmans){
            System.out.println("    "+linkman.getLkmName());
        }
    
        //6.    
        session.close();
    
    }

    코드
    두 개의 지구 화 류
    Customer
    public class Customer {
        private Long custId;//bigint(32) NOT NULL AUTO_INCREMENT COMMENT '    (  )',
        private String custName;//varchar(32) NOT NULL COMMENT '    (    )',
        private String custSource;//varchar(32) DEFAULT NULL COMMENT '      ',
        private String custIndustry;//varchar(32) DEFAULT NULL COMMENT '      ',
        private String custLevel;//varchar(32) DEFAULT NULL COMMENT '    ',
        private Set linkmans = new HashSet();//        
    
        public Set getLinkmans() {
            return linkmans;
        }
        public void setLinkmans(Set linkmans) {
            this.linkmans = linkmans;
        }
        get()/set()......
    }

    Linkman
    public class Linkman {
        private Long lkmId;//  
        private String lkmName;
        private Long lkmCustId;//  
        private String lkmGender;
        private String lkmPhone;
        private String lkmMobile;
        private String lkmEmail;
        private String lkmQq;
        private String lkmPosition;
        private String lkmMemo;
    
        get()/set()......   
    }

    설 정 된 맵 파일
    Customer.hbm.xml
    
    
    <hibernate-mapping>
        
        
    
        <class name="com.entity.Customer" table="cst_customer">
            
            
            <id name="custId" column="cust_id">
                
                <generator class="native">generator>
            id>
            
            <property name="custName" column="cust_name">property>
            <property name="custSource" column="cust_source">property>
            <property name="custIndustry" column="cust_industry">property>
            <property name="custLevel" column="cust_level">property>
    
            
            
            <set name="linkmans">
                
                <key column="lkm_cust_id">key>
                
                <one-to-many class="com.entity.Linkman" />
            set>
        class>
    
    hibernate-mapping>
    

    Linkman.hbm.xml
    
    
    <hibernate-mapping>
        <class name="com.entity.Linkman" table="cst_linkman">
            <id name="lkmId" column="lkm_id">
                <generator class="identity">generator>
            id>
            <property name="lkmName" column="lkm_name">property>
            <property name="lkmCustId" column="lkm_cust_id">property>
            <property name="lkmGender" column="lkm_gender">property>
            <property name="lkmPhone" column="lkm_phone">property>
            <property name="lkmMobile" column="lkm_mobile">property>
            <property name="lkmEmail" column="lkm_email">property>
            <property name="lkmQq" column="lkm_qq">property>
            <property name="lkmPosition" column="lkm_position">property>
            <property name="lkmMemo" column="lkm_memo">property>
        class>
    hibernate-mapping>
    

    총 프로필 hibenate. cfg. xml
    hbm. xml 두 개 를 불 러 옵 니 다.
    
    
    
    
    <hibernate-configuration>
        
        <session-factory>
          
          
          <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driverproperty>
          
          <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate01property>
          
          <property name="hibernate.connection.username">rootproperty>
          
          <property name="hibernate.connection.password">rootproperty>
    
          
          <property name="hibernate.show_sql">trueproperty>
    
          
          <property name="hibernate.format_sql">trueproperty>
    
          
           <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialectproperty>
    
          
          <mapping resource="com/entity/hmb/Customer.hbm.xml"/>
          <mapping resource="com/entity/hmb/Linkman.hbm.xml"/>
        session-factory>
    hibernate-configuration>
    

    좋은 웹페이지 즐겨찾기