日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate学习(三)

發(fā)布時間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate学习(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

映射基礎

(1)基本實體映射技術

類和表映射

<hibernate-mapping?package="hibernate.test.domain">??

<class?name="Student"?table="student"?lazy="true">

</class>

</hibernate-mapping>

主鍵映射

<id?name="id">

<generator?class="uuid"/>

</id>

普通字段映射

<property?name="sNo"?column="sno"?not-null="true"??type="java.lang.String"></property>

?

(2)多個字段作為主鍵

第一步:建立實體(Book

多個字段作為主鍵時,需要重新建一個類,包含作為主鍵的各個字段。在這里命名為BookName

//多個字段做主鍵

//Composite-id?class?must?implement?Serializable

public?class?BookName?implements?Serializable{

/**

?*?

?*/

private?static?final?long?serialVersionUID?=?1L;

private?String?name;

private?String?author;

public?String?getName()?{

return?name;

}

public?void?setName(String?name)?{

this.name?=?name;

}

public?String?getAuthor()?{

return?author;

}

public?void?setAuthor(String?author)?{

this.author?=?author;

}

public?BookName()?{

super();

//?TODO?Auto-generated?constructor?stub

}

public?BookName(String?name,?String?author)?{

super();

this.name?=?name;

this.author?=?author;

}


}

Book

package?hibernate.test.domain;

?

public?class?Book?{

private?BookName?id;

private?String?shortShow;

private?String?picture;

private?String?content;


public?void?setId(BookName?id)?{

this.id?=?id;

}

public?BookName?getId()?{

return?id;

}

public?String?getShortShow()?{

return?shortShow;

}

public?void?setShortShow(String?shortShow)?{

this.shortShow?=?shortShow;

}

public?String?getPicture()?{

return?picture;

}

public?void?setPicture(String?picture)?{

this.picture?=?picture;

}

public?String?getContent()?{

return?content;

}

public?void?setContent(String?content)?{

this.content?=?content;

}


}

?

第二步:?映射文件(Book.hbm.xml

<?xml?version="1.0"?encoding="UTF-8"?>??

<!DOCTYPE?hibernate-mapping?PUBLIC??

????????"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"??

????????"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">??

<hibernate-mapping?package="hibernate.test.domain">??

<class?name="Book"?table="Book"?lazy="true">

<composite-id?name="id"?class="BookName">

<key-property?name="name"?type="java.lang.String"?column="name"></key-property>

<key-property?name="author"?type="java.lang.String"?column="author"></key-property>

</composite-id>

<property?name="shortShow"?column="shortShow"?type="java.lang.String"></property>

<property?name="picture"?column="picture"?type="java.lang.String"></property>

<property?name="content"?column="content"?type="java.lang.String"></property>

</class>

</hibernate-mapping>

第三步:配置文件

mapping下添加映射文件位置:

<mapping?resource="hibernate/test/xml/Book.hbm.xml"></mapping>

第四部:測試??插入數據

public?static?void?main(String[]?args)?{

????????Session?session=null;

????????Transaction?tx=null;

????????try?{

????????session=HibernateUtil.getSession();

????????tx=session.beginTransaction();

????????BookName?bookName=new?BookName("快樂是本","ytt");

????????Book?book=new?Book();

????????book.setId(bookName);

????????book.setPicture("http://");

????????book.setShortShow("簡單介紹");

????????book.setContent("介紹內容");

????????session.save(book);

????????tx.commit();

????????}?catch?(Exception?e)?{

????????//?TODO:?handle?exception

????????if(tx!=null)

????????tx.rollback();

????????}

????????finally{

????????if(session!=null)

????????session.close();

????????}

????}

數據庫驗證,插入成功!?

(3)組合關系映射(會產生很多冗余數據,大多還是通過一對多,多對多進行設計)

第一步?類的建立

public?class?Address?{

private?String?city;

private?String?street;

private?String?zipcode;

public?String?getCity()?{

return?city;

}

public?void?setCity(String?city)?{

this.city?=?city;

}

public?String?getStreet()?{

return?street;

}

public?void?setStreet(String?street)?{

this.street?=?street;

}

public?String?getZipcode()?{

return?zipcode;

}

public?void?setZipcode(String?zipcode)?{

this.zipcode?=?zipcode;

}

public?Address(String?city,?String?street,?String?zipcode)?{

super();

this.city?=?city;

this.street?=?street;

this.zipcode?=?zipcode;

}

public?Address()?{

super();

//?TODO?Auto-generated?constructor?stub

}

//組合關系測試

public?class?Person?{

private?int?id;

private?String?name;

private?Address?address;

public?int?getId()?{

return?id;

}

public?void?setId(int?id)?{

this.id?=?id;

}

public?String?getName()?{

return?name;

}

public?void?setName(String?name)?{

this.name?=?name;

}

public?Address?getAddress()?{

return?address;

}

public?void?setAddress(Address?address)?{

this.address?=?address;

}

}

第二步?映射文件

<?xml?version="1.0"?encoding="UTF-8"?>??

<!DOCTYPE?hibernate-mapping?PUBLIC??

????????"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"??

????????"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">??

??

<hibernate-mapping?package="hibernate.test.domain">??

<class?name="Person"?table="Person"?lazy="true">

<id?name="id">

<generator?class="native"></generator>

</id>

<property?name="name"></property>

<component?name="address"?class="Address">

<property?name="city"></property>

<property?name="street"></property>

<property?name="zipcode"></property>

</component>

</class>

</hibernate-mapping>

第三步?配置文件

??<mapping?resource="hibernate/test/xml/Person.hbm.xml"></mapping>

第四步?測試

public?static?void?main(String[]?args)?{

//?TODO?Auto-generated?method?stub

Session?session=null;

Transaction?tx=null;

try?{

session=HibernateUtil.getSession();

tx=session.beginTransaction();

Address?address=new?Address("鄭州",?"商都路G107國道",?"0371");

Person?person=new?Person();

person.setName("ytt");

person.setAddress(address);

session.save(person);

tx.commit();

}?catch?(Exception?e)?{

//?TODO:?handle?exception

if(tx!=null)

{

tx.rollback();

}

}

finally{

session.close();

}

}

?

實際上是一張表,插入語句時這個:

Hibernate:?insert?into?Person?(name,?city,?street,?zipcode)?values?(?,??,??,??)

?

(4)大對象映射

Clob?文本大對象?最長4G

Blob?二進制數據大對象?最長4G

這個也不是很常用,就像其他類型一樣使用,在映射文件中,type改為“java.sql.Blob/Clob”就行。


轉載于:https://blog.51cto.com/yt0116/1729597

總結

以上是生活随笔為你收集整理的Hibernate学习(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。