本文研究的主要是Hibernate組件映射的相關內容,具體如下。
組件關聯映射的屬性是複雜類型的持久化類,但不是實體類,即數據庫中沒有表與該屬性對應,但該類的屬性要持久保存。
比如:外國人的名字name分為firstName和lastName。
public class MyName {private String firstName;private String lastName;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}}注:這是一個組件類,不和數據庫進行映射,它對應People中的name字段。
public class People {private Integer pid;/*名字通過MyName這個類來組合,即組件關聯*/private MyName name;public Integer getPid() {return pid;}public void setPid(Integer pid) {this.pid = pid;}public MyName getName() {return name;}public void setName(MyName name) {this.name = name;}}注:name字段是通過組件(MyName類)關聯來是實現的。
<?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="com.lixue.bean"> <class name="People" table="t_people"> <id name="pid"> <generator/> </id> <!-- 通過Component來實現主鍵的映射--> <component name="name"> <property name="firstName" /> <property name="lastName" /> </component> </class> </hibernate-mapping>
注:組件關聯是通過<component>標籤來映射的。
public void testSave1(){/*定義Session和事物*/Session session = null;Transaction transaction = null;try {/*獲取Session並開啟事物*/session = HibernateUtils.getSession();transaction = session.beginTransaction();/*創建名字*/MyName myName = new MyName();myName.setFirstName("喬治");myName.setLastName("華盛頓");/*創建人並設置屬性*/People people = new People();people.setName(myName);session.save(people);/*提交事物*/transaction.commit();}catch (Exception e) {e.printStackTrace();transaction.rollback();}finally{HibernateUtils.closeSession(session);}}以上就是本文關於Hibernate組件映射代碼詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!