標籤:3.0 orm void final -- pack 外鍵 als size
1)建立Person類:
public class Person {private Integer id;private String name;private IdCard IdCard;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public IdCard getIdCard() {return IdCard;}public void setIdCard(IdCard card) {this.IdCard = card;}@Overridepublic String toString() {return "Person [id=" + id + ",name=" + name + "]";}}
2)建立IdCard類:
public class IdCard {private Integer id;private String number;private Person person;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}@Overridepublic String toString() {return "IdCard [id=" + id + ",number=" + number + "]";}}
3)建立持久化類:
public class perAndIdDao {/** * save方法 */@Testpublic void testSave() {Session session = SessionFactoryTools.getSession();Transaction tx = null;try {tx = session.beginTransaction();// ===============================================// 建立兩個Person對象Person person1 = new Person();person1.setName("張三");Person person2 = new Person();person2.setName("李四");// 建立兩個IdCard對象IdCard idCard1 = new IdCard();idCard1.setNumber("37292501");IdCard idCard2 = new IdCard();idCard2.setNumber("37292502");// 加入關聯對象person1.setIdCard(idCard1);person2.setIdCard(idCard2);idCard1.setPerson(person1);idCard2.setPerson(person2);// 儲存session.save(person1);session.save(person2);session.save(idCard1);session.save(idCard2);// ===============================================tx.commit();} catch (RuntimeException e) {if (tx != null) {tx.rollback();}throw e;} finally {session.close();}}/** * getById方法 */@Testpublic void testGetById() {Session session = SessionFactoryTools.getSession();Transaction tx = null;try {tx = session.beginTransaction();// ===============================================// 擷取person隊象並列印改隊象的資訊和相關聯的idCard資訊Person person = (Person) session.get(Person.class, 1);System.out.println(person + ":");System.out.println(person.getIdCard());// 擷取idCard對象並列印改隊象的資訊和相關聯的person資訊IdCard idCard = (IdCard) session.get(IdCard.class, 2);System.out.println(idCard + ":");System.out.println(idCard.getPerson());// ===============================================tx.commit();} catch (RuntimeException e) {if (tx != null) {tx.rollback();}throw e;} finally {session.close();}}/** * 解除關聯關係的方法 */@Testpublic void testRemoveRelation() {Session session = SessionFactoryTools.getSession();Transaction tx = null;try {tx = session.beginTransaction();// ===============================================/** * 擷取person對象並將其關聯的IdCard設定為空白 在多對一中, * 因為一方不具有外鍵管理權。所以解除外部索引鍵關聯是不能實現的 * Person person = (Person) session.get(Person.class, 1); * person.setIdCard(null); *//** * 擷取idCard對象並將其相關聯的person設定為空白 在多對一中, * 因為多方具有外鍵的系統管理權限,所以該外鍵的解除是能夠實現的 */IdCard idCard = (IdCard) session.get(IdCard.class, 1);idCard.setPerson(null);// ===============================================tx.commit();} catch (RuntimeException e) {if (tx != null) {tx.rollback();}throw e;} finally {session.close();}}/** * 刪除隊象的方法 */@Testpublic void testDelete() {Session session = SessionFactoryTools.getSession();Transaction tx = null;try {tx = session.beginTransaction();// ===============================================/** * 擷取person對象並刪除該對象 * 在多對一中。因為一方不具有外鍵的系統管理權限。 所以刪除該對象是不可能實現的 * Person person = (Person) session.get(Person.class, 1); * session.delete(person); *//** * 擷取idCard對象並刪除該對象 * 在多對一中。因為多方具有外鍵愛你的系統管理權限, * 所以刪除該對象是能夠實現的 */IdCard idCard = (IdCard) session.get(IdCard.class, 1);session.delete(idCard);// ===============================================tx.commit();} catch (RuntimeException e) {if (tx != null) {tx.rollback();}throw e;} finally {session.close();}}}
4)Person.hbm.xml的配置:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="map_3"><!--類名:Person 類相應的表名:person 一對一相應類:IdCard一對一相應的表:idCard一對一所相應的外鍵的屬性名稱:person--><class name="Person" table="person"><id name="id" type="int" column="id"><generator class="native" /></id><property name="name" type="string" column="name" length="20" /><one-to-one name="idCard" class="IdCard" property-ref="person"></one-to-one></class></hibernate-mapping>
5)IdCard.hbm.xml的配置:
<?xml version="1.0"?
><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="map_3"><!--類名:IdCard 類相應的表名:idCard多對一相應類的表名:person多對一相應的類名:Person多對一相應的列名:personId設定為一對一關聯性:unique="true"--><class name="IdCard" table="idCard"><id name="id" type="int" column="id"><generator class="native" /></id><property name="number" type="string" column="number" /><many-to-one name="person" class="Person" column="personId" unique="true"></many-to-one></class></hibernate-mapping>
6) 主檔案的配置:
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory name="foo"><!-- 設定資料庫資訊 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.url">jdbc:mysql:///hibernate0</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.username">root</property><property name="hibernate.connection.password">root</property><!-- 其它配置 --><property name="hibernate.show_sql">false</property><property name="hibernate.format_sql">false</property><property name="hbm2ddl.auto">update</property><!-- 對應檔配置 --><mapping resource="map_3/Person.hbm.xml" /><mapping resource="map_3/IdCard.hbm.xml" /></session-factory></hibernate-configuration>
Hibernate_8_Person和IdCard執行個體_一對一關聯性:基於外鍵