<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blogjava's web log

    blogjava's web log
    ...

    hibernate一對(duì)一例子-已更新(一)

    先看由滿江紅翻譯團(tuán)隊(duì)(RedSaga Translate Team)翻譯的一對(duì)一配置說(shuō)明
    一對(duì)一

    持久化對(duì)象之間一對(duì)一的關(guān)聯(lián)關(guān)系是通過(guò)one-to-one元素定義的。

    <one-to-one
            name="propertyName"                                          (1)
            class="ClassName"                                            (2)
            cascade="cascade_style"                                      (3)
            constrained="true|false"                                     (4)
            fetch="join|select"                                          (5)
            property-ref="propertyNameFromAssociatedClass"               (6)
            access="field|property|ClassName"                            (7)
            formula="any SQL expression"                                 (8)
            lazy="true|proxy|false"                                      (9)
            entity-name="EntityName"                                     (10)
            node="element-name|@attribute-name|element/@attribute|."
            embed-xml="true|false"
    />
    (1)

    name: 屬性的名字。

    (2)

    class (可選 - 默認(rèn)是通過(guò)反射得到的屬性類型):被關(guān)聯(lián)的類的名字。

    (3)

    cascade(級(jí)聯(lián)) (可選) 表明操作是否從父對(duì)象級(jí)聯(lián)到被關(guān)聯(lián)的對(duì)象。

    (4)

    constrained(約束) (可選) 表明該類對(duì)應(yīng)的表對(duì)應(yīng)的數(shù)據(jù)庫(kù)表,和被關(guān)聯(lián)的對(duì)象所對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之間,通過(guò)一個(gè)外鍵引用對(duì)主鍵進(jìn)行約束。 這個(gè)選項(xiàng)影響save()delete()在級(jí)聯(lián)執(zhí)行時(shí)的先后順序以及 決定該關(guān)聯(lián)能否被委托(也在schema export tool中被使用).

    (5)

    fetch (可選 - 默認(rèn)設(shè)置為選擇): 在外連接抓取或者序列選擇抓取選擇其一.

    (6)

    property-ref: (可選) 指定關(guān)聯(lián)類的屬性名,這個(gè)屬性將會(huì)和本類的主鍵相對(duì)應(yīng)。如果沒(méi)有指定,會(huì)使用對(duì)方關(guān)聯(lián)類的主鍵。

    (7)

    access (可選 - 默認(rèn)是 property): Hibernate用來(lái)訪問(wèn)屬性的策略。

    (8)

    formula (可選):絕大多數(shù)一對(duì)一的關(guān)聯(lián)都指向其實(shí)體的主鍵。在一些少見(jiàn)的情況中, 你可能會(huì)指向其他的一個(gè)或多個(gè)字段,或者是一個(gè)表達(dá)式,這些情況下,你可以用一個(gè)SQL公式來(lái)表示。 (可以在org.hibernate.test.onetooneformula找到例子)

    (9)

    lazy (可選 - 默認(rèn)為 proxy): 默認(rèn)情況下,單點(diǎn)關(guān)聯(lián)是經(jīng)過(guò)代理的。lazy="true"指定此屬性應(yīng)該在實(shí)例變量第一次被訪問(wèn)時(shí)應(yīng)該延遲抓取(fetche lazily)(需要運(yùn)行時(shí)字節(jié)碼的增強(qiáng))。 lazy="false"指定此關(guān)聯(lián)總是被預(yù)先抓取。注意,如果constrained="false", 不可能使用代理,Hibernate會(huì)采取預(yù)先抓取!

    (10)

    entity-name (可選): 被關(guān)聯(lián)的類的實(shí)體名。

    具體配置可以看
    http://www.huihoo.com/framework/hibernate/reference-v3_zh-cn/mapping.html
    好。。再來(lái)測(cè)試。。。
    1.建表
    create ? table ?student
    (sid?
    varchar ( 32 )? not ? null ? primary ? key ,
    ?sname?
    varchar ( 16 ),
    ?sage?
    varchar ( 16 )
    )
    create ? table ?address
    (aid?
    varchar ( 32 )? not ? null ? primary ? key ,
    acity?
    varchar ( 16 ),
    aroad?
    varchar ( 16 )
    )
    2.寫(xiě)VO
    ?? Address vo
    package?com.test;

    public?class?Address
    {
    ????
    private?String?aid;
    ????
    private?String?acity;
    ????
    private?String?aroad;
    ????
    private?Student?student;
    ??
    //寫(xiě)上GET?SET方法
    Student vo
    package?com.test;
    public?class?Student
    {
    ????
    private?String?sid;
    ????
    private?String?sname;
    ????
    private?String?sage;
    ????
    private?Address?address;
    //寫(xiě)上get?set

    3.寫(xiě)配置文件
    Student.hbm.xml
    <?xml?version="1.0"?>
    <!DOCTYPE?hibernate-mapping
    ????PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD//EN"
    ????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
    >

    <hibernate-mapping>

    ????
    <class?name="com.test.Student"?table="student"?>

    ????????
    <id?name="sid"?type="string"?unsaved-value="null"?>
    ????????????
    <column?name="sid"?sql-type="char(32)"?not-null="true"/>
    ????????????
    <generator?class="uuid.hex"/>
    ????????
    </id>

    ????????
    <property?name="sname">
    ????????????
    <column?name="sname"?sql-type="varchar(16)"?/>
    ????????
    </property>

    ????????
    <property?name="sage">
    ????????????
    <column?name="sage"?sql-type="varchar(16)"?/>
    ????????
    </property>

    ????????
    <one-to-one?name="address"?class="com.test.Address"?cascade="all"/>?
    ???
    ????
    </class>

    </hibernate-mapping>
    Address.hbm.xml
    <?xml?version="1.0"?>
    <!DOCTYPE?hibernate-mapping
    ????PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD//EN"
    ????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
    >

    <hibernate-mapping>

    ????
    <class?name="com.test.Address"?table="address"?>

    ????????
    <id?name="aid"?type="string"?unsaved-value="null"?>
    ????????????
    <column?name="aid"?sql-type="char(32)"?not-null="true"/>
    ????????????
    <generator?class="foreign">
    ????????????????
    <param?name="property">student</param>
    ????????????
    </generator>
    ????????
    </id>

    ????????
    <property?name="acity">
    ????????????
    <column?name="acity"?sql-type="varchar(16)"?/>
    ????????
    </property>

    ????????
    <property?name="aroad">
    ????????????
    <column?name="aroad"?sql-type="varchar(16)"?/>
    ????????
    </property>

    ????????
    <one-to-one?name="student"?class="com.test.Student"/>

    ????
    </class>

    </hibernate-mapping>

    接著把下面的hibernate.properties文件拷到classes目錄下。。這里用的是mysql
    hibernate.query.substitutions?true?1,?false?0,?yes?'Y',?no?'N'
    ##?MySQL
    hibernate.dialect?net.sf.hibernate.dialect.MySQLDialect
    hibernate.connection.driver_class?org.gjt.mm.mysql.Driver
    hibernate.connection.url?jdbc:mysql://localhost:3306/wjcms
    hibernate.connection.username?root
    hibernate.connection.password?wujun
    hibernate.connection.pool_size?1
    hibernate.proxool.pool_alias?pool1
    hibernate.show_sql?true
    hibernate.jdbc.batch_size?0
    hibernate.max_fetch_depth?1
    hibernate.cache.use_query_cache?true?
    4.寫(xiě)測(cè)試類了..

    package?com.test;

    import?net.sf.hibernate.Session;
    import?net.sf.hibernate.SessionFactory;
    import?net.sf.hibernate.cfg.Configuration;
    import?net.sf.hibernate.*;
    import?java.sql.*;
    import?java.util.List;

    public?class?TestOneToOne
    {
    ????SessionFactory?sf;
    ????Session?session;
    ????
    public?TestOneToOne()
    ????
    {
    ????????
    try
    ????????
    {
    ????????????Configuration?cfg?
    =?new?Configuration();
    ????????????sf?
    =?cfg.addClass(Student.class).addClass(Address.class).buildSessionFactory();
    ????????}

    ????????
    catch(HibernateException?ex)
    ????????
    {
    ????????????ex.printStackTrace();
    ????????}

    ????}

    ????
    public?void?doCreate()
    ????
    {
    ????????
    try
    ????????
    {
    ????????????session?
    =?sf.openSession();

    ????????????Student?student?
    =?new?Student();
    ????????????student.setSname(
    "小王");
    ????????????student.setSage(
    "22");

    ????????????Address?address?
    =?new?Address();
    ????????????address.setAcity(
    "深圳");
    ????????????address.setAroad(
    "深南");
    ????????????address.setStudent(student);
    ????????????student.setAddress(address);

    ????????????session.save(student);
    ????????????session.flush();
    ????????????session.connection().commit();

    ????????}

    ????????
    catch(HibernateException?ex)
    ????????
    {
    ????????????ex.printStackTrace();
    ????????}

    ????????
    catch(SQLException?ex1)
    ????????
    {
    ????????????ex1.printStackTrace();
    ????????}

    ????????
    finally
    ????????
    {
    ????????????????
    try{
    ????????????????????session.close();
    ????????????????}

    ????????????????
    catch(HibernateException?ex2){
    ????????????????}

    ????????}


    ????}

    ????
    public?void?doQuery()
    ????
    {
    ????????
    try{
    ????????????session?
    =?sf.openSession();
    ????????????Query?q?
    =?session.createQuery("select?s?from?Student?as?s");
    ????????????List?l?
    =?q.list();
    ????????????Student?s?
    =?null;
    ????????????Address?address?
    =?null;
    ????????????
    for(int?i=0;i<l.size();i++)
    ????????????
    {
    ????????????????s?
    =?(Student)l.get(i);
    ????????????????System.out.println(
    "姓名:?"+s.getSname());
    ????????????????System.out.println(
    "年齡:?"+s.getSage());
    ????????????????address?
    =?s.getAddress();
    ????????????????System.out.println(
    "住址:??"+address.getAcity()+address.getAroad());
    ????????????}


    ????????}

    ????????
    catch(HibernateException?ex){
    ????????????ex.printStackTrace();
    ????????}

    ????????
    finally{
    ????????????
    try{
    ????????????????session.close();
    ????????????}

    ????????????
    catch(HibernateException?ex2){
    ????????????}

    ????????}

    ????}

    ????
    public?static?void?main(String[]?args)
    ????
    {
    ????????TestOneToOne?t?
    =?new?TestOneToOne();
    ????????
    //t.doCreate();
    ????????t.doQuery();
    ????}

    }

    posted on 2006-04-06 16:05 record java and net 閱讀(6059) 評(píng)論(3)  編輯  收藏 所屬分類: java

    評(píng)論

    # re: hibernate一對(duì)一例子-方便以后查看(一) 2006-04-13 11:45 foreverjiang

    <one-to-one name="address" class="com.test.Address" cascade="all"/>

    <one-to-one name="student" class="com.test.Student"/>

    這里的2個(gè)一對(duì)一都對(duì)應(yīng)什么,只要定義一對(duì)一的字段,無(wú)需定義別的嗎  回復(fù)  更多評(píng)論   

    # re: hibernate一對(duì)一例子-已更新(一) 2006-04-22 09:50 吳某人-不斷地學(xué)習(xí)

    是的。。

      回復(fù)  更多評(píng)論   

    # re: hibernate一對(duì)一例子-已更新(一) 2008-04-29 10:52 xx

    寫(xiě)一個(gè)級(jí)聯(lián)刪除的例子吧。
    搞不定  回復(fù)  更多評(píng)論   

    導(dǎo)航

    常用鏈接

    留言簿(44)

    新聞檔案

    2.動(dòng)態(tài)語(yǔ)言

    3.工具箱

    9.文檔教程

    友情鏈接

    搜索

    最新評(píng)論

    主站蜘蛛池模板: 中文字幕无码精品亚洲资源网久久 | **一级毛片免费完整视| 国产日本一线在线观看免费| 韩国日本好看电影免费看| 亚洲精品国产成人影院| 亚洲国产夜色在线观看| 日本精品久久久久久久久免费| 无码专区AAAAAA免费视频| 国产免费变态视频网址网站| 亚洲中文字幕无码久久2017| 四虎必出精品亚洲高清| 成人人免费夜夜视频观看| 亚洲va在线va天堂va888www| 日韩国产精品亚洲а∨天堂免| 好紧我太爽了视频免费国产| 四虎影在线永久免费观看| 亚洲av无码日韩av无码网站冲| 国产免费午夜a无码v视频| 一级特黄a免费大片| 成人毛片免费网站| 中文字幕亚洲综合久久2| 狠狠躁狠狠爱免费视频无码| 国产免费观看a大片的网站| 未满十八私人高清免费影院| 国产又大又粗又硬又长免费 | 久久亚洲精品11p| 国产偷国产偷亚洲高清日韩| 亚洲精品自偷自拍无码| 91嫩草国产在线观看免费| 亚洲黄色免费电影| 免费看的黄色大片| 人成电影网在线观看免费| 亚洲国产一区二区三区青草影视| 国产无遮挡又黄又爽免费网站| 免费一级肉体全黄毛片| 亚洲欧美第一成人网站7777| 国产亚洲精品久久久久秋霞| 最近2019中文字幕免费大全5 | 亚洲色欲一区二区三区在线观看| 一级一级一级毛片免费毛片| 亚洲国产精品婷婷久久|