<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        IT忍者神龜之Hibernat持久化對象-數(shù)據(jù)表映射配置回顧

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 14:19:31
        文檔

        IT忍者神龜之Hibernat持久化對象-數(shù)據(jù)表映射配置回顧

        IT忍者神龜之Hibernat持久化對象-數(shù)據(jù)表映射配置回顧:1.持久化對象POJO編寫規(guī)則: 1) 有空參public構(gòu)造器; 2) 提供標(biāo)識屬性,映射數(shù)據(jù)表主鍵; 3) 屬性提供setter和getter方法; 4) 屬性使用基本數(shù)據(jù)類型的包裝類型。基本類型在數(shù)據(jù)庫中不能區(qū)分null和0; 5) 不使用final修飾。如果使用final則無
        推薦度:
        導(dǎo)讀IT忍者神龜之Hibernat持久化對象-數(shù)據(jù)表映射配置回顧:1.持久化對象POJO編寫規(guī)則: 1) 有空參public構(gòu)造器; 2) 提供標(biāo)識屬性,映射數(shù)據(jù)表主鍵; 3) 屬性提供setter和getter方法; 4) 屬性使用基本數(shù)據(jù)類型的包裝類型。基本類型在數(shù)據(jù)庫中不能區(qū)分null和0; 5) 不使用final修飾。如果使用final則無

        1.持久化對象POJO編寫規(guī)則: 1) 有空參public構(gòu)造器; 2) 提供標(biāo)識屬性,映射數(shù)據(jù)表主鍵; 3) 屬性提供setter和getter方法; 4) 屬性使用基本數(shù)據(jù)類型的包裝類型。基本類型在數(shù)據(jù)庫中不能區(qū)分null和0; 5) 不使用final修飾。如果使用final則無法生成代

        1.持久化對象POJO編寫規(guī)則:

        1) 有空參public構(gòu)造器;

        2) 提供標(biāo)識屬性,映射數(shù)據(jù)表主鍵;

        3) 屬性提供setter和getter方法;

        4) 屬性使用基本數(shù)據(jù)類型的包裝類型。基本類型在數(shù)據(jù)庫中不能區(qū)分null和0;

        5) 不使用final修飾。如果使用final則無法生成代理對象;當(dāng)使用了final,load查詢將如同get查詢。

        2.POJO的OID:

        OID是持久化類與數(shù)據(jù)表主鍵對應(yīng)的屬性,用來唯一區(qū)分持久化對象。

        自然主鍵:采用數(shù)據(jù)庫中有意義的列的值作為主鍵(有意義)

        代理主鍵:采用自動生成的流水號、UUID作為主鍵(無意義,推薦)

        3.數(shù)據(jù)類型:

        基本類型無法區(qū)分null和0,開發(fā)中POJO屬性都使用包裝類型。

        4.持久化類配置POJO.hbm.xml:

        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 xml version="1.0" encoding="UTF-8"?> DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.cvu.domain"> jdbc:mysql:///數(shù)據(jù)庫 " --> <class name="User" table="table_user" catalog="db_hibernate"> <id name="id" column="id" type="int"> <generator class="native">generator> id>    <property name="name" column="name" type="string">property>    <property name="age" column="age" type="int" >property>    <property name="city" column="city" sql-type="string">property> class> hibernate-mapping>

        1)主鍵生成策略increment:頂層遞增:

        \

        由hibernate自動完成,原理:先查詢最大值,再插入此值加一。OID必須為long、int或short類型。

        優(yōu)點(diǎn):跨數(shù)據(jù)庫。

        缺點(diǎn):多線程并發(fā)訪問問題。

        2)主鍵生成策略identity:底層遞增:

        \

        由數(shù)據(jù)庫自動完成,要求數(shù)據(jù)庫必須支持自增主鍵。mysql支持,oracle不支持。OID必須為long、int或short類型。

        優(yōu)點(diǎn):無并發(fā)訪問問題。

        3)主鍵生成策略sequence:序列:

        由數(shù)據(jù)庫自動完成遞增,要求數(shù)據(jù)庫必須支持序列。mysql不支持,oracle支持。OID必須為long、int或short類型。

        Oracle:

        1創(chuàng)建序列:create sequence myseq;

        2調(diào)用序列:insert into customer values (myseq.nextval); #序列加一

        4)主鍵生成策略native:本地:

        \

        采用數(shù)據(jù)庫支持的自增策略。 mysql:identity,oracle:sequence。OID必須為long、int或short類型。

        優(yōu)點(diǎn):跨數(shù)據(jù)庫平臺。

        5)主鍵生成策略uuid:標(biāo)識符:

        \

        由數(shù)據(jù)庫自動創(chuàng)建。 uuid是32位唯一字符串,表單主鍵使用varchar類型,POJO對應(yīng)屬性是String類型。

        6)主鍵生成策略assigned:手動指定:

        \

        在調(diào)用hibernate時手動指定主鍵的值,用于自然主鍵(有意義的)。

        1 2 3 4 5 6 7 8 9 10 11 12 13 14 public void testInsertAssigned() { Session session = UtilGetSesstion.openSession(); Transaction transaction = session.beginTransaction(); User user = new User(); user.setId(20130124); //手動設(shè)置主鍵 user.setName("EminemXXX"); user.setAge(42); user.setCity("NewYorkXXX"); session.save(user); transaction.commit(); session.close(); }

        7)主鍵生成策略:復(fù)合主鍵:

        (1)編寫POJO類 Person.java:

        1 2 3 4 5 6 7 8 9 10 11 package cn.cvu.domain; import java.io.Serializable; //務(wù)必事先序列化接口 public class Person implements Serializable { private String firstName; //對應(yīng)表單的復(fù)合主鍵 private String secondName; //對應(yīng)表單的復(fù)合主鍵 private String address; //get/set //toString }

        (2)配置POJO.hbm.xml:

        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 xml version="1.0" encoding="UTF-8"?> DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.cvu.domain"> <class name="Person" table="table_person" catalog="db_hibernate"> <composite-id> <key-property name="firstName" column="nameFirst">key-property> <key-property name="secondName" column="nameFirst">key-property> composite-id> <property name="address" column="addr" type="string">property> class> hibernate-mapping>

        (3)配置hibernate.cfg.xml,加載Person.hbm.xml文件:

        \

        (4)操作類的方法:

        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public void testInsert() { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = new Person(); person.setFirstName("C"); person.setSecondName("Vigiles"); person.setAddress("Beijng"); session.save(person); transaction.commit(); session.close(); sessionFactory.close(); }

        (5)結(jié)果:

        \

        INFO: HHH000262: Table not found: tb_person
        2013-11-5 10:07:12 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
        ERROR: HHH000388: Unsuccessful: create table db_hibernate.tb_person (namef varchar(255) not null, names varchar(255) not null, age integer, city varchar(255), primary key (namef, names)) type=InnoDB
        2013-11-5 10:07:12 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
        ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 7
        2013-11-5 10:07:12 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
        INFO: HHH000232: Schema update complete
        \

        1 2 3 <property name="hibernate.dialect">   org.hibernate.dialect.MySQL5InnoDBDialectproperty>

        -end

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        IT忍者神龜之Hibernat持久化對象-數(shù)據(jù)表映射配置回顧

        IT忍者神龜之Hibernat持久化對象-數(shù)據(jù)表映射配置回顧:1.持久化對象POJO編寫規(guī)則: 1) 有空參public構(gòu)造器; 2) 提供標(biāo)識屬性,映射數(shù)據(jù)表主鍵; 3) 屬性提供setter和getter方法; 4) 屬性使用基本數(shù)據(jù)類型的包裝類型。基本類型在數(shù)據(jù)庫中不能區(qū)分null和0; 5) 不使用final修飾。如果使用final則無
        推薦度:
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 一区二区无码免费视频网站| 亚洲国产成人无码AV在线| 亚洲中文字幕无码一区二区三区 | 免费观看国产精品| 国产aⅴ无码专区亚洲av麻豆 | 超清首页国产亚洲丝袜| 久久精品国产亚洲AV无码麻豆| 亚洲无限乱码一二三四区| MM1313亚洲精品无码久久| 久久精品无码专区免费| 可以免费看的卡一卡二| 国产成人麻豆亚洲综合无码精品| j8又粗又长又硬又爽免费视频 | 亚洲制服丝袜一区二区三区| 暖暖免费中文在线日本| 免费专区丝袜脚调教视频| 亚洲国产成人精品女人久久久| 亚洲视频一区在线观看| 久久国产乱子伦精品免费午夜| 亚洲日韩欧洲无码av夜夜摸| 亚洲AV综合永久无码精品天堂| 亚洲&#228;v永久无码精品天堂久久 | 免费永久看黄在线观看app| 一级做a爰片久久毛片免费陪| 一二三四在线播放免费观看中文版视频 | 免费能直接在线观看黄的视频| 国产亚洲福利在线视频| 午夜精品免费在线观看| 亚洲Av无码国产情品久久 | 亚洲videos| 999久久久免费精品播放| 亚洲精品乱码久久久久久自慰| 春暖花开亚洲性无区一区二区| 亚洲一区视频在线播放| 美国免费高清一级毛片| 毛片免费全部播放一级| 亚洲精品免费在线| 亚洲午夜免费视频| 亚洲国产成人精品无码区二本 | 亚洲Av无码国产一区二区| 国产va免费精品观看精品|