세트
컬렉션 세트는 중복 요소가 포함되지 않은 Java 컬렉션입니다. 보다 공식적으로, 세트는 E1 및 E2의 요소를 포함하지 않아 E1.equals (e2) 및 최대 하나의 빈 요소를 포함하지 않습니다. 따라서 객체 세트에 추가되는 것은 Java가 두 요소/객체가 동일한 지 여부를 결정할 수 있도록 equals () 및 hashcode () 메소드를 구현해야합니다.
세트는지도 테이블의 <set> 요소에 매핑되며 java.util.hashset에서 초기화됩니다. 세트 컬렉션을 사용하여 클래스를 사용할 때 반복 할 필요가없는 컬렉션에 요소가있을 수 있습니다.
RDBMS 정의 테이블 :
직원 기록이 직원 테이블에 저장되어야하는 경우를 고려하십시오.
테이블 직원 생성 (id int null auto_increment, first_name varchar (20) 기본 널, last_name varchar (20) 기본 널, 급여 int 기본 널, 기본 키 (id));
또한 각 직원은 그와 관련된 하나 이상의 인증서를 가질 수 있다고 가정합니다. 따라서 인증서의 관련 정보를 다음 구조의 별도 테이블에 저장합니다.
테이블 인증서 생성 (ID int NOL NOT NULL AUTO_INCREMENT, CERTICETE_NAME VARCHAR (30) DEFAULT NULL, Employee_ID Default NULL, 기본 키 (ID));
마니 직원과 인증서 개체 사이에는 관계가 있습니다.
pojo 클래스 정의 :
Pojo 클래스 직원은 직원 테이블 및 자격 증명 세트 변수에 객체 모음을 보유하는 데 사용될 것입니다.
import java.util.*; 공공 클래스 직원 {private int id; 개인 문자열 firstName; 개인 문자열 마지막 이름; 개인 INT 급여; 개인 세트 인증서; 공공 직원 () {} 공공 직원 (문자열 fname, 문자열 lname, int 월급) {this.firstname = fname; this.lastname = lname; this.salary = 급여; } public int getId () {return id; } public void setid (int id) {this.id = id; } public String getFirstName () {return firstName; } public void setFirstName (String First_Name) {this.firstName = first_name; } public String getLastName () {return lastName; } public void setLastName (string last_name) {this.lastname = last_name; } public int getSalary () {반환 급여; } public void setSalary (int 급여) {this.salary = 월급; } public set getCertificates () {리턴 인증서; } public void setCertificates (세트 인증서) {this.certificates = 인증서; }} 이제 테이블에 해당하는 다른 POJO 클래스의 인증서를 정의하겠습니다. 그러한 인증서 객체는 인증서 테이블을 저장하고 검색 할 수 있습니다. 이 클래스는 또한 equals () 및 hashcode () 메소드를 동시에 구현해야하므로 Java는 두 요소/객체가 동일한 지 여부를 결정할 수 있습니다.
공개 수업 인증서 {private int id; 개인 문자열 이름; 공개 인증서 () {} 공개 인증서 (문자열 이름) {this.name = 이름; } public int getId () {return id; } public void setid (int id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public boolean Equals (Object obj) {if (obj == null) false를 반환합니다. if (! this.getClass (). equals (obj.getClass ())) false를 반환합니다. 인증서 OBJ2 = (인증서) obj; if ((this.id == obj2.getId ()) && (this.name.equals (obj2.getName ())) {return true; } false를 반환합니다. } public int hashcode () {int tmp = 0; tmp = (id + name) .hashcode (); 반환 TMP; }} 최대 절전 모드 매핑 파일 정의 :
최대 절전 모드가 데이터베이스 테이블에 맵핑하는 매핑 파일을 정의하는 방법을 지정하는 매핑 파일을 개발하겠습니다. <set> 요소는 컬렉션을 설정하는 데 사용되는 규칙을 정의하는 데 사용됩니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype hibernate-mapping public "-// hibernate mapping dtd // en" "http://www.hibernate.org/dtdd/hibernate-mapping-3.0.dtd"> <ClasseMApping> ""Hibernate> " table = "Employee"> <meta attribute = "class-description">이 클래스에는 직원 세부 사항이 포함되어 있습니다. </meta> <id name = "id"type = "int"column = "id"> <generator/> </id> <set name = "set name ="atertireeee_id "/> <one-to-many/> </set> <property name ="firstname ""first_name "string ="string ""string "" ""kold "" ""string "" " type = "string"/> <property name = "Salary"column = "Salary"type = "int"/> </class> <class name = "certificate"table = "인증서"> <meta attribute = "class-description">이 클래스에는 인증서 레코드가 포함되어 있습니다. 매
저장 해야하는 매핑 파일의 형식 <classname> .hbm.xml. 매핑 파일에 eployee.hbm.xml 파일을 저장하십시오. 대부분의 매핑 세부 사항에 이미 익숙하며 파일의 모든 요소를 매핑합니다.
매핑 된 문서는 2 <class> 요소를 포함하는 각 클래스에 해당하는 루트 요소로 <hibernate-mapping>이있는 XML 문서입니다.
<class> 요소는 Java 클래스에서 데이터베이스 테이블 별 매핑을 정의하는 데 사용됩니다. Java 클래스 이름 클래스 요소의 이름 속성을 지정하고 테이블 속성 데이터베이스 테이블 이름을 지정합니다.
<Meta> 요소는 클래스에 대한 설명을 만드는 데 사용할 수있는 선택적 요소입니다.
<id> 요소는 클래스의 고유 ID 속성을 데이터베이스 테이블의 기본 키에 매핑합니다. ID 요소의 이름 속성은 속성의 클래스를 나타냅니다. 열 속성은 데이터베이스 테이블의 열을 나타냅니다. 유형 속성은 Java에서 SQL 데이터 유형으로 변환되는 최대 절전 모드 매핑 유형을 저장합니다.
ID 요소 내의 <generator> 요소는 기본 키 값을 자동으로 생성하는 데 사용됩니다. 생성 된 요소의 클래스 속성을 원래 요소로 설정하여 최대 절전 모드를 선택하여 ID, 시퀀스 또는 HILO 알고리즘을 선택하여 기본 데이터베이스의 지원 기능에 따라 기본 키를 생성합니다.
<property> 요소는 자바 클래스의 속성을 데이터베이스 테이블의 열에 매핑하는 데 사용됩니다. 요소의 이름 속성은 속성의 클래스를 나타내고 열 속성은 데이터베이스 테이블의 열을 나타냅니다. 유형 속성은 Java에서 SQL 데이터 유형으로 변환되는 최대 절전 모드 매핑 유형을 저장합니다.
<set> 요소는 새롭고 인증서와 직원 클래스의 관계를 설정하기 위해 소개되었습니다. 우리는 캐스케이드 속성의 <set> 요소를 사용하여 인증서 객체와 직원 객체를 저장하기 위해 Hibernate를 알려줍니다. 이름 속성은 부모 클래스의 정의에서 변수를 설정하도록 설정되었으며,이 경우 인증서입니다. 각 변수 세트에 대해 매핑 파일에서 별도의 요소 세트를 정의해야합니다.
<키> 요소는 외국 키, 즉 인증서 테이블의 열이 포함 된 상위 객체입니다. 테이블 직원.
<일대일 요소는 직원 객체에 많은 인증서가 포함되어 있음을 나타냅니다. 따라서 인증서 객체는 부모 직원과 관련되어야합니다. 필요에 따라 <1-10>, <다-하나> 또는 <다가요> 요소를 사용할 수 있습니다.
응용 프로그램 클래스 생성 :
마지막으로 응용 프로그램 클래스의 Main () 메소드를 작성하여 응용 프로그램을 실행합니다. 우리는이 앱을 사용하여 자격 증명과 함께 일부 직원 레코드를 저장 한 다음 CRUD 운영에 대한 레코드를 신청할 것입니다.
java.util.*; import org.hibernate.hibernateException; import org.hibernate.session; import org.hibernate.transaction; import org.hibernate.sessionfactory; import org.hibernate.cfg.configuration; public class manageemployee {private static sessionfactory factory; public static void main (string [] args) {try {factory = new configuration (). configure (). buildSessionFactory (); } catch (Throwable ex) {System.err.println ( "SessionFactory 객체를 생성하지 못했습니다." + ex); 새로운 예외를 던지십시오. } manageemployee me = new manageemployee (); / * 첫 번째 직원에 대한 인증서 세트를 갖도록하겠습니다 */ Hashset set1 = new Hashset (); set1.add (새 인증서 ( "MCA")); set1.add (새 인증서 ( "MBA")); set1.add (새 인증서 ( "MBA")); set1.add (새 인증서 ( "PMP")); / * 데이터베이스에서 직원 레코드 추가 */ 정수 Empid1 = Me.addemployee ( "Manoj", "Kumar", 4000, set1); / * 두 번째 직원에 대한 다른 인증서 세트 */ Hashset set2 = new Hashset (); set2.add (새 인증서 ( "BCA")); set2.add (새 인증서 ( "ba")); / * 데이터베이스에서 다른 직원 레코드를 추가 */ 정수 Empid2 = me.addemployee ( "dilip", "kumar", 3000, set2); / * 모든 직원을 나열하십시오 */ me.listemployee (); / * 직원의 급여 기록 업데이트 */ me.updateemployee (Empid1, 5000); / * 데이터베이스에서 직원을 삭제 */ me.deleteemployee (EMPID2); / * 모든 직원을 나열하십시오 */ me.listemployee (); } / * 데이터베이스에서 직원 레코드를 추가하는 방법 * / public integer addemployee (문자열 fname, 문자열 lname, int senary, set cert) {세션 세션 = inctory.opensession (); 트랜잭션 tx = null; 정수 EmployeeId = null; try {tx = session.begintransaction (); 직원 직원 = 신입 사원 (fname, lname, 월급); Employee.setCertificates (cert); EmployeeId = (Integer) Session.Save (직원); tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); } return EmployeeId; } / * 모든 직원 세부 정보를 나열하는 방법 * / public void listemployees () {세션 세션 = factory.opensession (); 트랜잭션 tx = null; try {tx = session.begintransaction (); List Employees = session.createrecer ( "직원에서"). list (); for (iterator iterator1 = EmployE.ITERATOR (); iterator1.hasnext ();) {Employee Employee = (Employee) iterator1.next (); System.out.print ( "이름 :" + Employee.getFirstName ()); System.out.print ( "성 :" + Employee.getLastName ()); System.out.println ( "급여 :" + Employee.getSalary ()); 세트 인증서 = 직원 .getCertificates (); for (iterator iterator2 = refertyators.iterator (); iterator2.hasnext ();) {reateral rectName = (인증서) iterator2.next (); System.out.println ( "인증서 :" + certname.getName ()); }} tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); }} / * 직원에 대한 급여를 업데이트하는 방법 * / public void updateemployee (Integer EmployeeId, int 월급) {세션 세션 = inctory.opensession (); 트랜잭션 tx = null; try {tx = session.begintransaction (); Employee Employee Employee = (Employee) Session.get (Employee.class, EmployeeId); Employee.SetSalary (급여); 세션 .update (직원); tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); }} / * 레코드에서 직원을 삭제하는 방법 * / public void deleteemployee (Integer EmployeeId) {세션 세션 = inctory.opensession (); 트랜잭션 tx = null; try {tx = session.begintransaction (); Employee Employee Employee = (Employee) Session.get (Employee.class, EmployeeId); 세션 .Delete (직원); tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); }}} 컴파일 및 실행 :
위의 응용 프로그램을 컴파일하고 실행하는 단계는 다음과 같습니다. 컴파일 및 실행 전에 경로와 클래스 경로가 적절하게 설정되어 있는지 확인하십시오.
다음 결과는 화면에서 얻을 것이며 직원 및 인증 테이블에서 레코드가 작성됩니다.
$ java manageemployee
..... 다양한 로그 메시지가 여기에 표시됩니다 ......... 이름 : Manoj 성 : Kumar 급여 : 4000Certificate : Mbacertificate : Mcafirst 이름 : McAfirst 이름 : Dilip 성직자 : Kumar 급여 : 3000 계약 : Bcacertificate : Bafirst 이름 : Manoj 성 연봉 : 5000certificate : MCA의 MCA.
직원 및 인증서 양식을 확인하면 다음을 기록해야합니다.
MySQL> 직원에서 선택 *;
+---------------------------+----------+| id | First_name | Last_name | 급여 |+-------------------------------------------------------+| 1 | Manoj | 쿠마르 | 5000 |+-------------------------------------------------+1 행 (0.00 초)
MySQL> 선정 * 인증서;
+----+----------------------------------+| id | 인증서 _name | Employee_id |+----+---------------------------------+| 1 | MBA | 1 || 2 | PMP | 1 || 3 | MCA | 1 |+-----+------------------------------------------------------ 세트의 3 행 (0.00 초)
mysql>
SINTEDSET
SortedSet은 자연 순서를 제공하거나 비교기로 정렬되는 중복 요소 및 요소가 포함되지 않은 Java 컬렉션입니다.
매핑 테이블 <set> 요소 및 java.util.treeset에서 초기화 된 정렬 세트 맵. 정렬 속성은 비교기 또는 자연 순서로 설정할 수 있습니다. 자연 순서가 사용되면 반복자는 오름차순 순서로 배열 된 세트 요소를 통과합니다.
우리는 여전히 위의 예에 정의 된 RDBMS 테이블을 사용하며 여러 직원과 인증서 개체 사이에 관계가 있으며 POJO 클래스도 위에서 정의됩니다.
Pojo 클래스 직원은 직원 테이블에 객체 모음을 보유하는 데 사용됩니다.
이제 인증서 테이블에 해당하는 다른 POJO 클래스의 인증서를 정의하겠습니다. 그러한 인증서 객체는 인증서 테이블을 저장하고 검색 할 수 있습니다. 이 클래스는 또한 비교 가능한 인터페이스를 구현해야하며 비교 방법은 매핑 파일 (아래지도 파일 참조)의 경우 Sort = "Natural"을 설정하는 데 사용되며 요소가 정렬됩니다.
공개 클래스 인증서는 <인증서> {private int id; 개인 문자열 이름; 공개 인증서 () {} 공개 인증서 (문자열 이름) {this.name = 이름; } public int getId () {return id; } public void setid (int id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public int compareto (인증서) {최종 int 이전 = -1; 마지막 int 이후 = 1; if (that == null) {이전; } 비교 가능한 thisCertificate = this.getName (); 비슷한 thatcertificate = that.getName (); if (thiscertificate == null) {return after; } else if (thatcertificate == null) {이전; } else {return thiscertificate.compareto (thatcertificate); }}} 최대 절전 모드 매핑 파일 정의 :
최대 절전 모드가 데이터베이스 테이블에 맵핑하는 매핑 파일을 정의하는 방법을 지정하는 매핑 파일을 개발하겠습니다. <set> 요소는 사용 된 SortedSet 컬렉션의 규칙을 정의하는 데 사용됩니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype hibernate-mapping public "-// hibernate mapping dtd // en" "http://www.hibernate.org/dtdd/hibernate-mapping-3.0.dtd"> <ClasseMApping> ""Hibernate> " table = "Employee"> <meta attribute = "class-description">이 클래스에는 직원 세부 사항이 포함되어 있습니다. </meta> <id name = "id"type = "int"column = "id"> <generator/> </id> <set name = "reatectorates"cascade = "all"sort = "myclass"> <key column = "employee_id"/> <one-to-many/</set> <firstname ""first_name "type ="string "/>>>>>>>>>> <lect-many/> <a set> <firstname" "stine"/>. column = "last_name"type = "string"/> <속성 이름 = "Salary"column = "Salary"type = "int"/> </class> <class name = "pertificate"table = "인증서"> <meta attribute = "class-description">이 클래스에는 인증서 레코드가 포함됩니다. 매
<classname> .hbm.xml 형식 맵 파일에서 맵 파일에 eployee.hbm.xml 파일을 저장합니다. 나는 이미 대부분의 매핑 세부 사항에 익숙했지만 매핑 파일의 모든 요소를 보자.
매핑 된 문서는 2 <class> 요소를 포함하는 각 클래스에 해당하는 루트 요소로 <hibernate-mapping>이있는 XML 문서입니다.
<class> 요소는 Java 클래스에서 데이터베이스 테이블 별 매핑을 정의하는 데 사용됩니다. Java 클래스 이름 클래스 요소의 이름 속성을 지정하고 테이블 속성 데이터베이스 테이블 이름을 지정합니다.
<Meta> 요소는 클래스에 대한 설명을 만드는 데 사용할 수있는 선택적 요소입니다.
<id> 요소는 클래스의 고유 ID 속성을 데이터베이스 테이블의 기본 키에 매핑합니다. ID 요소의 이름 속성은 속성의 클래스를 나타냅니다. 열 속성은 데이터베이스 테이블의 열을 나타냅니다. 유형 속성은 Java에서 SQL 데이터 유형으로 변환되는 최대 절전 모드 매핑 유형을 저장합니다.
ID 요소 내의 <generator> 요소는 기본 키 값을 자동으로 생성하는 데 사용됩니다. 생성 된 요소의 클래스 속성을 기본적으로 최대 절전 모드가 알고리즘, 시퀀스 또는 힐로에서 알고리즘을 선택하여 기본 데이터베이스의 지원 기능에 따라 기본 키를 생성하도록합니다.
<property> 요소는 자바 클래스의 속성을 데이터베이스 테이블의 열에 매핑하는 데 사용됩니다. 요소의 이름 속성은 속성의 클래스를 나타내고 열 속성은 데이터베이스 테이블의 열을 나타냅니다. 유형 속성은 Java에서 SQL 데이터 유형으로 변환되는 최대 절전 모드 매핑 유형을 저장합니다.
<set> 요소는 인증서와 직원 클래스 간의 관계를 설정하는 데 사용됩니다. 캐스케이드 속성의 <Set> 요소를 사용하여 인증서 객체를 저장하고 직원 객체에도 최대 절전 모드를 알려줍니다. 이름 속성은 부모 클래스에 정의 된 SortedSet의 변수로 설정되며,이 경우 인증서입니다. 정렬 속성은 자연 분류로 설정하거나 java.util.comparator로 사용자 정의 클래스 구현으로 설정할 수 있습니다. 인증서 클래스 구현의 정렬 순서를 뒤집기 위해 java.util.comparator로 구현하는 클래스 MyClass를 사용했습니다.
<키> 요소는 외국 키, 즉 인증서 테이블의 열이 포함 된 상위 객체입니다. 테이블 직원.
<일대일 요소는 직원 객체에 많은 인증서 객체가 포함되어 있음을 나타냅니다. 따라서 인증서 객체는 부모 직원과 관련되어야합니다. 필요에 따라 <1-10>, <다-하나> 또는 <다가요> 요소를 사용할 수 있습니다.
Sort = "Natural"설정을 사용하는 경우 인증서 클래스가 비교 가능한 인터페이스를 구현했으며 Hibernate는 비교 (인증서 클래스에서 비교 인증서 이름으로 정의 됨)를 사용하기 때문에 별도의 클래스를 만들 필요가 없습니다. 그러나 매핑 파일에서 사용자 정의 비교기 클래스 MyClass를 사용하므로 정렬 알고리즘을 기반 으로이 클래스를 만들어야합니다. 이 클래스를 사용하여 내림차순으로 정렬하십시오.
import java.util.comparator; public class myclass emplements 비교기 <인증서> {public int compare (인증서 O1, 인증서 O2) {최종 int 이전 = -1; 마지막 int 이후 = 1; / * 분류 순서를 반전 시키려면, 다중 -1 */ if (o2 == null) {이전 * -1; } 비교 가능한 thisCertificate = o1.getName (); 비슷한 thatcertificate = o2.getName (); if (thiscertificate == null) { * 1 이후에 반환; } else if (thatcertificate == null) {return * -1; } else {return thiscertificate.compareto (thatcertificate) * -1; }}} 응용 프로그램 클래스 생성 :
마지막으로 응용 프로그램 클래스의 Main () 메소드를 작성하여 응용 프로그램을 실행합니다. 우리는이 앱을 사용하여 인증서와 함께 일부 직원 기록을 저장 한 다음 CRUD 작업에 대한 기록을 신청합니다.
java.util.*; import org.hibernate.hibernateException; import org.hibernate.session; import org.hibernate.transaction; import org.hibernate.sessionfactory; import org.hibernate.cfg.configuration; public class manageemployee {private static sessionfactory factory; public static void main (string [] args) {try {factory = new configuration (). configure (). buildSessionFactory (); } catch (Throwable ex) {System.err.println ( "SessionFactory 객체를 생성하지 못했습니다." + ex); 새로운 예외를 던지십시오. } manageemployee me = new manageemployee (); / * 첫 번째 직원에 대한 인증서 세트를 두십시오 */ treeset set1 = new Treeset (); set1.add (새 인증서 ( "MCA")); set1.add (새 인증서 ( "MBA")); set1.add (새 인증서 ( "MBA")); set1.add (새 인증서 ( "PMP")); / * 데이터베이스에서 직원 레코드 추가 */ 정수 Empid1 = Me.addemployee ( "Manoj", "Kumar", 4000, set1); / * 두 번째 직원에 대한 다른 인증서 세트 */ treeset set2 = new Treeset (); set2.add (새 인증서 ( "BCA")); set2.add (새 인증서 ( "ba")); / * 데이터베이스에서 다른 직원 레코드를 추가 */ 정수 Empid2 = me.addemployee ( "dilip", "kumar", 3000, set2); / * 모든 직원을 나열하십시오 */ me.listemployee (); / * 직원의 급여 기록 업데이트 */ me.updateemployee (Empid1, 5000); / * 데이터베이스에서 직원을 삭제 */ me.deleteemployee (EMPID2); / * 모든 직원을 나열하십시오 */ me.listemployee (); } / * 데이터베이스에서 직원 레코드를 추가하는 방법 * / public integer addemployee (문자열 fname, 문자열 lname, int senary, sortedset cert) {session session = factory.opensession (); 트랜잭션 tx = null; 정수 EmployeeId = null; try {tx = session.begintransaction (); 직원 직원 = 신입 사원 (fname, lname, 월급); Employee.setCertificates (cert); EmployeeId = (Integer) Session.Save (직원); tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); } return EmployeeId; } / * 모든 직원 세부 정보를 나열하는 방법 * / public void listemployees () {세션 세션 = factory.opensession (); 트랜잭션 tx = null; try {tx = session.begintransaction (); List Employees = session.createrecer ( "직원에서"). list (); for (iterator iterator1 = EmployE.ITERATOR (); iterator1.hasnext ();) {Employee Employee = (Employee) iterator1.next (); System.out.print ( "이름 :" + Employee.getFirstName ()); System.out.print ( "성 :" + Employee.getLastName ()); System.out.println ( "급여 :" + Employee.getSalary ()); SortedSet 인증서 = Employee.getCertificates (); for (iterator iterator2 = refertyators.iterator (); iterator2.hasnext ();) {reateral rectName = (인증서) iterator2.next (); System.out.println ( "인증서 :" + certname.getName ()); }} tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); }} / * 직원에 대한 급여를 업데이트하는 방법 * / public void updateemployee (Integer EmployeeId, int 월급) {세션 세션 = inctory.opensession (); 트랜잭션 tx = null; try {tx = session.begintransaction (); Employee Employee Employee = (Employee) Session.get (Employee.class, EmployeeId); Employee.SetSalary (급여); 세션 .update (직원); tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); }} / * 레코드에서 직원을 삭제하는 방법 * / public void deleteemployee (Integer EmployeeId) {세션 세션 = inctory.opensession (); 트랜잭션 tx = null; try {tx = session.begintransaction (); Employee Employee Employee = (Employee) Session.get (Employee.class, EmployeeId); 세션 .Delete (직원); tx.commit (); } catch (HibernateException e) {if (tx! = null) tx.rollback (); e.printstacktrace (); } 마침내 {session.close (); }}}컴파일 및 실행 후 다음 결과는 화면에서 얻어지고 직원 및 인증서 테이블 모두에서 레코드가 작성됩니다. 인증서가 반대 순서로 정렬되었음을 알 수 있습니다. 매핑 파일을 변경하여 Sort = "Natural"을 설정하고 프로그램을 실행하고 결과를 비교하여 시도해 볼 수 있습니다.
$ java manageemployee
..... 다양한 로그 메시지가 여기에 표시됩니다 ......... 이름 : Manoj 성 : Kumar 급여 : 4000Certificate : PMPCertificate : McAcertificate : Mbafirst 이름 : Dilip 성직자 : Kumar 급여 : 3000Certificate : Bcacertificate : Bafirst 이름 : Manoj 성 연봉 : McBA : McBA.
직원 및 인증서 양식을 확인하면 다음을 기록해야합니다.
MySQL> 직원에서 선택 *;
+---------------------------+----------+| id | First_name | Last_name | 급여 |+--------------------------------------------------------+| 1 | Manoj | 쿠마르 | 5000 |+-------------------------------------------------+1 행 (0.00 초)
MySQL> 선정 * 인증서;
+----+----------------------------------+| id | 인증서 _name | Employee_id |+----+---------------------------------+| 1 | MBA | 1 || 2 | PMP | 1 || 3 | MCA | 1 |+-----+------------------------------------------------------ 세트의 3 행 (0.00 초)