版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、因?yàn)閷W⑺詫I(yè) 因?yàn)閷I(yè)所以領(lǐng)先q部門(mén):公共產(chǎn)品與研發(fā)部q講師:譚昌輝課程目標(biāo)課程目標(biāo)n熟悉Java、SQL、JDBC,掌握面向?qū)ο蟮拈_(kāi)發(fā)方法,并有實(shí)際項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)n理解O/R Mapping原理,掌握Hibernate開(kāi)發(fā)的相關(guān)知識(shí),并能使用Hibernate進(jìn)行實(shí)際項(xiàng)目開(kāi)發(fā)培訓(xùn)內(nèi)容持久化層O/R Mapping一Hibernate入門(mén)二Hibernate映射聲明三持久化對(duì)象的狀態(tài)和生命周期四Hibernate查詢?nèi)錒ibernate最佳實(shí)踐六一、持久化層O/R Mapping基于B/S的典型三層架構(gòu)在輕量級(jí)J2EE分層架構(gòu)中,Hibernate處于持久層。在領(lǐng)域驅(qū)動(dòng)開(kāi)發(fā)方法論里面,Hi
2、bernate將作為域模型的框架如何進(jìn)行對(duì)象關(guān)系數(shù)據(jù)庫(kù)的匹配public class User private String name; private String password;private List address;create table tbl_user (name varchar(255) not null , password varchar(255),.primary key (name) 如何進(jìn)行對(duì)象如何進(jìn)行對(duì)象關(guān)系數(shù)據(jù)庫(kù)的匹配?關(guān)系數(shù)據(jù)庫(kù)的匹配?對(duì)象對(duì)象關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)類的屬性(基本類型)表的列類表1:n/n:1外鍵n:m關(guān)聯(lián)表繼承單表繼承、具體表繼承、類表繼承基
3、于關(guān)系數(shù)據(jù)庫(kù)的持久層可選方案優(yōu)點(diǎn)優(yōu)點(diǎn)缺點(diǎn)缺點(diǎn)SQL/JDBC成熟,流行,使用DAO模式代碼煩雜,可讀性差,維護(hù)困難,移植困難Entity BeanCMP(EJB1.1之后),未來(lái)的EJB3錯(cuò)誤的設(shè)計(jì)。不可移植,依賴性強(qiáng),不可序列化,不支持多態(tài)的關(guān)聯(lián)查詢JDO簡(jiǎn)單、透明、標(biāo)準(zhǔn)不夠成熟Apache OJB性能、穩(wěn)定性,屬于Apache 基金組織文檔資源太少,支持標(biāo)準(zhǔn)太多成了負(fù)擔(dān)(ODMG 3.0,JDO1.0)iBATIS可以控制更多的數(shù)據(jù)庫(kù)操作細(xì)節(jié)。實(shí)用于遺留系統(tǒng)的改造和對(duì)既有數(shù)據(jù)庫(kù)的復(fù)用。持久層封裝不夠徹底,只是一個(gè)DBHelper。Hibernate成熟、流行、功能強(qiáng)大。并逐漸發(fā)展成Java
4、 持久層事實(shí)上的標(biāo)準(zhǔn)。不夠透明O/R Mapping -What? Why?什么是O/R Mapping? 對(duì)象-關(guān)系映射是一門(mén)非常實(shí)用的工程技術(shù),它實(shí)現(xiàn)了Java應(yīng)用中的對(duì)象到關(guān)系數(shù)據(jù)庫(kù)中的表的自動(dòng)的(和透明的)持久化,使用元數(shù)據(jù)(meta data)描述對(duì)象與數(shù)據(jù)庫(kù)間的映射。O/R Mapping的優(yōu)點(diǎn)q提高生產(chǎn)率(Productivity)q可維護(hù)性(Maintainability)q廠商獨(dú)立性(Vendor independence)培訓(xùn)內(nèi)容持久化層O/R Mapping一Hibernate入門(mén)二Hibernate映射聲明三持久化對(duì)象的狀態(tài)和生命周期四Hibernate查詢?nèi)錒ibe
5、rnate最佳實(shí)踐六Hibernate介紹Hibernate概述 Hibernate是非常優(yōu)秀、成熟的O/R Mapping框架。它提供了強(qiáng)大的對(duì)象和關(guān)系數(shù)據(jù)庫(kù)映射以及查詢功能。Hibernate優(yōu)勢(shì)q開(kāi)源(LGPL)q成熟q流行(約13 000 downloads/month)q自定義APIqJBoss 將用Hibernate3實(shí)現(xiàn)Entity BeansHibernate開(kāi)發(fā)步驟一、持久化類的設(shè)計(jì)二、持久化類和關(guān)系數(shù)據(jù)庫(kù)的映射三、應(yīng)用的開(kāi)發(fā)持久化Java類必須遵循的原則q為類的持久化類字段申明訪問(wèn)方法(get/set)。Hibernate對(duì)JavaBeans風(fēng)格的屬性實(shí)行持久化。q實(shí)現(xiàn)一個(gè)
6、默認(rèn)的構(gòu)造方法(constructor)。這樣的話Hibernate就可以使用Constructor.newInstance()來(lái)實(shí)例化它們。q如果是集合類型的屬性,它的類型必須定義為集合的接口。例如:List、Set。q提供一個(gè)標(biāo)識(shí)屬性(identifier property)。如果沒(méi)有該屬性,一些功能不起作用,比如:級(jí)聯(lián)更新(Cascaded updates)Session.saveOrUpdate()。持久化類和關(guān)系數(shù)據(jù)庫(kù)的映射XDoclet:它通過(guò)在Java源代碼中加入特定的JavaDoc tag,從而為其添加特定的附加語(yǔ)義,之后通過(guò)XDoclet工具對(duì)代碼中JavaDoc Tag進(jìn)行
7、分析,自動(dòng)生成與代碼對(duì)應(yīng)的配置文件(http:/ 從數(shù)據(jù)庫(kù)中已有的表結(jié)構(gòu)中生成Hibernate映射文件。當(dāng)前版本是2.1可以去http:/boss.bekk.no/boss/middlegen下載。Hibernate核心接口Configuration概述:Configuration 類負(fù)責(zé)管理Hibernate 的配置信息。它包括如下內(nèi)容:qHibernate運(yùn)行的底層信息:數(shù)據(jù)庫(kù)的URL、用戶名、密碼、JDBC驅(qū)動(dòng)類,數(shù)據(jù)庫(kù)Dialect,數(shù)據(jù)庫(kù)連接池等。qHibernate映射文件(*.hbm.xml)。Hibernate配置的兩種方法:q屬性文件(pertie
8、s)。調(diào)用代碼:Configuration cfg = new Configuration(); qXml文件(hibernate.cfg.xml)。調(diào)用代碼:Configuration cfg = new Configuration().configure();Configuration例子數(shù)據(jù)庫(kù)連接的配置hibernate.dialect = net.sf.hibernate.dialect.MySQLDialecthibernate.connection.driver_class = com.mysql.jdbc.Driverhibernate.connection.url = jdbc
9、:mysql:/localhost/hibernatehibernate.connection.username = roothibernate.connection.password數(shù)據(jù)庫(kù)連接池的配置DBCP(App Server連接池首選)vider_class = net.sf.hibernate.connection.DBCPConnectionProvider配置DBCP連接池其它hibernate.show_sql = truehibernate.jdbc.fetch_size = 50hibernate.jdbc.batch_siz
10、e = 25SessionFactory概述:應(yīng)用程序從SessionFactory(會(huì)話工廠)里獲得Session(會(huì)話)實(shí)例。它在多個(gè)應(yīng)用線程間進(jìn)行共享。通常情況下,整個(gè)應(yīng)用只有唯一的一個(gè)會(huì)話工廠例如在應(yīng)用初始化時(shí)被創(chuàng)建。然而,如果你使用Hibernate訪問(wèn)多個(gè)數(shù)據(jù)庫(kù),你需要對(duì)每一個(gè)數(shù)據(jù)庫(kù)使用一個(gè)會(huì)話工廠。 會(huì)話工廠緩存了生成的SQL語(yǔ)句和Hibernate在運(yùn)行時(shí)使用的映射元數(shù)據(jù)。調(diào)用代碼:SessionFactory sessionFactory = cfg.buildSessionFactory();Session(會(huì)話)概述:qSession不是線程安全的,它代表與數(shù)據(jù)庫(kù)之間的一
11、次操作,它的概念介于Connection和Transaction之間。q Session也稱為持久化管理器,因?yàn)樗桥c持久化有關(guān)的操作接口。q Session通過(guò)SessionFactory打開(kāi),在所有的工作完成后,需要關(guān)閉。q它與Web層的HttpSession沒(méi)有任何關(guān)系。調(diào)用代碼Session session = sessionFactory.openSession();Transaction(事務(wù))概述: 它將應(yīng)用代碼從底層的事務(wù)實(shí)現(xiàn)中抽象出來(lái)這可能是一個(gè)JDBC事務(wù),一個(gè)JTA用戶事務(wù)或者甚至是一個(gè)公共對(duì)象請(qǐng)求代理結(jié)構(gòu)(CORBA)允許應(yīng)用通過(guò)一組一致的API控制事務(wù)邊界。這有助于保
12、持Hibernate應(yīng)用在不同類型的執(zhí)行環(huán)境或容器中的可移植性。調(diào)用代碼: Transaction tx = session.beginTransaction();注:使用Hibernate進(jìn)行操作時(shí)(增、刪、改)必須顯示的調(diào)用Transaction(默認(rèn):autoCommit=false)。Query概述:Query(查詢)接口允許你在數(shù)據(jù)庫(kù)上執(zhí)行查詢并控制查詢?nèi)绾螆?zhí)行。查詢語(yǔ)句使用HQL或者本地?cái)?shù)據(jù)庫(kù)的SQL方言編寫(xiě)。調(diào)用代碼:Query query = session.createQuery(“from User”); 用戶的例子持久化類User.javapublic class Use
13、r private Long id; private String name; private Date birthday; private String email; public User() public User(String name,Date birthday,String email) .Get/Set映射文件映射文件User.hbm.xml 應(yīng)用UserTest.javapublic void testCreate() throws Exception Configuration cfg = new Configuration(); cfg.addURL(UserTest.cl
14、ass.getResource(/com/test/um/User.hbm.xml); SessionFactory sessionFactory = cfg.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); SimpleDateFormat format = new SimpleDateFormat(yyyy-mm-dd); User user = new User(Jack,format.parse(1980-
15、04-12),J); session.save(user); mit(); assertNotNull(user.getId(); session.clear(); User user_2 = (User)session.get(User.class,user.getId(); assertNotNull(user_2); session.close(); 應(yīng)用UserTest.java保存用戶:session.save(user);修改用戶:session.update(user);保存或修改用戶:session.saveOrUpdate(user);刪除用戶:session.delete(
16、user);刪除所有用戶:session.delete(“from User ”);查詢用戶名為“test”的用戶:Query query = session.createQuery(from User where = :name);query.setParameter(“test,user.getName(); User findUser = (User) query.list().get(0);培訓(xùn)內(nèi)容持久化層O/R Mapping一Hibernate入門(mén)二Hibernate映射聲明三持久化對(duì)象的狀態(tài)和生命周期四Hibernate查詢?nèi)錒ibernate最佳實(shí)踐六Hi
17、bernate映射申明(Mapping declaration)hibernate-mapping一、類層次。class1、主鍵。id2、基本類型。property3、自定義類。many-to-one | one-to-one4、集合。set | list | map | array4.1、one-to-many4.2、many-to-many5、子類。subclass | joined-subclass6、其它。component | any等二、查詢語(yǔ)句。Query說(shuō)明:一個(gè)Hibernate-mapping中可以同時(shí)定義多個(gè)類。Query非常簡(jiǎn)單,主要是用來(lái)放置查詢語(yǔ)句,便于對(duì)數(shù)據(jù)庫(kù)查詢
18、的統(tǒng)一管理和優(yōu)化。hibernate-mapping(1)、schema(可選):數(shù)據(jù)庫(kù)Schema Name(2)、default-cascade(可選,默認(rèn)為none):默認(rèn)的級(jí)聯(lián)風(fēng)格(3)、auto-import(可選,默認(rèn)為true):是否在查詢中只使用類名。不用加package名字。(4)、package(可選),如果該映射文件中定義的類名不包含package,則使用這里定義的package作為類名的前綴。一、類層次class1、主鍵-id name=propertyName (1) type=typename (2) column=column_name (3) unsaved-v
19、alue=any|none|null|id_value (4) (1)、name (可選) :標(biāo)識(shí)屬性的名稱。(2)、type(可選):標(biāo)識(shí)Hibernate類型的名字。(3)、column(可選默認(rèn)為屬性名):對(duì)應(yīng)數(shù)據(jù)庫(kù)表的主鍵字段的名字。(4)、unsaved-value(可選默認(rèn)為null):這個(gè)值用來(lái)判斷對(duì)象是否要保存。 1.1主鍵生成策略generatorgenerator主鍵生成器,每個(gè)主鍵都必須定義相應(yīng)的主鍵生成策略。它用來(lái)為持久化類實(shí)例生成唯一的標(biāo)識(shí)。Hibernate內(nèi)置的主鍵生成策略q數(shù)據(jù)庫(kù)提供的主鍵生成機(jī)制。identity、sequence(序列) 。q外部程序提供的主
20、鍵生成機(jī)制。increment (遞增) ,hilo(高低位) ,seqhilo(使用序列的高低位 ),uuid.hex(使用了IP地址+JVM的啟動(dòng)時(shí)間(精確到1/4秒)+系統(tǒng)時(shí)間+一個(gè)計(jì)數(shù)器值(在JVM中唯一) ),uuid.string。q其它。native(本地),assigned(手工指定),foreign(外部引用)。2、基本類型property(4) update, insert (可選 - 默認(rèn)為 true) :表明在用于UPDATE 和/或 INSERT的SQL語(yǔ)句中是否包含這個(gè)字段。 (5) formula (可選): 一個(gè)SQL表達(dá)式,定義了這個(gè)計(jì)算(computed)
21、屬性的值。計(jì)算屬性沒(méi)有和它對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段。3.1、自定義類many-to-one(3) class (可選 - 默認(rèn)是通過(guò)反射得到屬性類型): 關(guān)聯(lián)的類的名字。 (4) cascade(級(jí)聯(lián)) (可選): 指明哪些操作會(huì)從父對(duì)象級(jí)聯(lián)到關(guān)聯(lián)的對(duì)象。 (5) outer-join(外連接) (可選 - 默認(rèn)為 自動(dòng)) hibernate.use_outer_join (7) property-ref: (可選) 指定關(guān)聯(lián)類的一個(gè)屬性,這個(gè)屬性將會(huì)和本外相對(duì)應(yīng)。例子:User-Group3.2、自定義類one-to-one一對(duì)一關(guān)聯(lián):主鍵關(guān)聯(lián)和惟一外鍵關(guān)聯(lián)兩種方式。例子:User-IdCard(外
22、鍵關(guān)聯(lián))4、集合Set4、集合Set(續(xù))(1) name 集合屬性的名稱 (2) table (可選)目標(biāo)關(guān)聯(lián)數(shù)據(jù)庫(kù)表(3) lazy (可選默認(rèn)為false)允許延遲加載(lazy initialization )(4) inverse (可選默認(rèn)為false) 標(biāo)記有哪一方來(lái)維護(hù)關(guān)聯(lián)關(guān)系(雙向關(guān)聯(lián)中使用)。 (5) cascade (可選默認(rèn)為none) 讓操作級(jí)聯(lián)到子實(shí)體 (6) order-by (可選, 僅用于jdk1.4) 指定表的字段(一個(gè)或幾個(gè))再加上asc或者desc(可選), 定義Map,Set和Bag的迭代順序 (7) where (可選) 指定任意的SQL where
23、條件(8) outer-join(可選-默認(rèn)為auto)是否使用外聯(lián)接4.1、one-to-many概念概念:一對(duì)多關(guān)聯(lián)直接連接兩個(gè)類對(duì)應(yīng)的表,而沒(méi)有中間集合表。(實(shí)現(xiàn)了一個(gè)一對(duì)多的關(guān)系模型,例如:User-Address)這里的Java集合必須滿足下面的語(yǔ)義:qmap,set或list中不能包含null值q一個(gè)被包含的實(shí)體的實(shí)例只能被包含在一個(gè)集合的實(shí)例中(1) class(必須):被關(guān)聯(lián)類的名稱。例子(one-to-many):User-Address 4.2、many-to-many(1) column(必需): 中間映射表中,關(guān)聯(lián)目標(biāo)表的關(guān)聯(lián)字段(2) class (必需): 類名,關(guān)
24、聯(lián)目標(biāo)類(3) outer-join (可選 - 默認(rèn)為auto) (1)(1) column(必需):當(dāng)前表的關(guān)聯(lián)字段例子(many to many):student-trainClass5、繼承繼承實(shí)現(xiàn)的三種策略q單表繼承。每棵類繼承樹(shù)使用一個(gè)表(table per class hierarchy) q具體表繼承。每個(gè)子類一個(gè)表(table per subclass) q類表繼承。每個(gè)具體類一個(gè)表(table per concrete class)(有一些限制)單表繼承例子(繼承):user-student雙向關(guān)聯(lián)概念:雙向關(guān)聯(lián)允許通過(guò)關(guān)聯(lián)的任一端訪問(wèn)另外一端。在Hibernate中, 支
25、持兩種類型的雙向關(guān)聯(lián)。q一對(duì)多(one-to-many),Set或者bag值在一端, 單獨(dú)值(非集合)在另外一端 。q多對(duì)多(many-to-many),兩端都是set或bag值。例子(雙向關(guān)聯(lián)):group-user 例子:從Java代碼看group-user雙向關(guān)聯(lián)的inverse概念:inverse用來(lái)標(biāo)識(shí)雙向關(guān)聯(lián)的關(guān)聯(lián)關(guān)系由哪一端維護(hù)。默認(rèn)inverse的值為false,由主動(dòng)方負(fù)責(zé)維護(hù)關(guān)聯(lián)關(guān)系;如果設(shè)為true,則由反向一端維護(hù)關(guān)聯(lián)關(guān)系。用例:我們假設(shè)已經(jīng)有一個(gè)Group類的實(shí)例:adminGroup,現(xiàn)在我們要新增一個(gè)用戶,并且將用戶分配到adminGroup中。qinverse=
26、“false”,由主動(dòng)方Group負(fù)責(zé)維護(hù)group-user的關(guān)聯(lián)關(guān)系.User user = new User(“Jak”);adminGroup.getUsers.add(user);session.save(user);session.update(group);qinverse=“true”,由Group的反向段User負(fù)責(zé)維護(hù)關(guān)聯(lián)關(guān)系。User user = new User(“Jak”);user .setGroup(adminGroup);session.save(user);培訓(xùn)內(nèi)容持久化層O/R Mapping一Hibernate入門(mén)二Hibernate映射聲明三持久化對(duì)象
27、的狀態(tài)和生命周期四Hibernate查詢?nèi)錒ibernate最佳實(shí)踐六持久化對(duì)象的狀態(tài)瞬時(shí)對(duì)象(Transient Objects):使用new 操作符初始化的對(duì)象不是立刻就持久的。它們的狀態(tài)是瞬時(shí)的,也就是說(shuō)它們沒(méi)有任何跟數(shù)據(jù)庫(kù)表相關(guān)聯(lián)的行為,只要應(yīng)用不再引用這些對(duì)象(不再被任何其它對(duì)象所引用),它們的狀態(tài)將會(huì)丟失,并由垃圾回收機(jī)制回收。 持久化對(duì)象(Persist Objects):持久實(shí)例是任何具有數(shù)據(jù)庫(kù)標(biāo)識(shí)的實(shí)例。它有持久化管理器Session統(tǒng)一管理,持久實(shí)例是在事務(wù)中進(jìn)行操作的它們的狀態(tài)在事務(wù)結(jié)束時(shí)同數(shù)據(jù)庫(kù)進(jìn)行同步。當(dāng)事務(wù)提交時(shí),通過(guò)執(zhí)行SQL的INSERT、UPDATE和DEL
28、ETE語(yǔ)句把內(nèi)存中的狀態(tài)同步到數(shù)據(jù)庫(kù)中。離線對(duì)象(Detached Objects):Session關(guān)閉之后,持久化對(duì)象就變?yōu)殡x線對(duì)象。離線表示這個(gè)對(duì)象不能再與數(shù)據(jù)庫(kù)保持同步,它們不再受Hibernate管理。持久化對(duì)象的生命周期(lifecycle)Hibernate數(shù)據(jù)字段更新檢索一個(gè)用戶,并將它的用戶名更改為“Mary”Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User user = (User) session.get(User.class, us
29、erId);user.setName(Mary);mit();session.close();持久化對(duì)象必須唯一一個(gè)Session中不能同時(shí)存在兩個(gè)ID相同的持久化對(duì)象例如:id為userId的user_1對(duì)象已經(jīng)存在Session中,這時(shí)如果Session中試圖產(chǎn)生一個(gè)user_2對(duì)象!Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User user_1 = (User)session.get(User.class,userId);User user_2 =
30、 new User(userId,”Mary”);session.update(user_2);最后將會(huì)產(chǎn)生異常:net.sf.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session解決辦法: 使用evict ()方法將user_1實(shí)例從session中去除。session.evict(user_1);培訓(xùn)內(nèi)容持久化層O/R Mapping一Hibernate入門(mén)二Hibernate映射聲明三持久化對(duì)
31、象的狀態(tài)和生命周期四Hibernate查詢?nèi)錒ibernate最佳實(shí)踐六五、Hibernate查詢概述:數(shù)據(jù)查詢與檢索是Hibernate中的一個(gè)亮點(diǎn)。相對(duì)其他ORM實(shí)現(xiàn)而言,Hibernate提供了靈活多樣的查詢機(jī)制。q標(biāo)準(zhǔn)化對(duì)象查詢(Criteria Query):以對(duì)象的方式進(jìn)行查詢,將查詢語(yǔ)句封裝為對(duì)象操作。優(yōu)點(diǎn):可讀性好,符合Java 程序員的編碼習(xí)慣。缺點(diǎn):不夠成熟,不支持投影(projection)或統(tǒng)計(jì)函數(shù)(aggregation)qHibernate語(yǔ)言查詢(Hibernate Query Language,HQL):它是完全面向?qū)ο蟮牟樵冋Z(yǔ)句,查詢功能非常強(qiáng)大,具備繼承、
32、多態(tài)和關(guān)聯(lián)等特性 。Hibernate官方推薦使用HQL進(jìn)行查詢。qNative SQL Queries(原生SQL查詢):直接使用數(shù)據(jù)庫(kù)提供的SQL方言進(jìn)行查詢。例子:標(biāo)準(zhǔn)化對(duì)象查詢(Criteria Query)簡(jiǎn)單例子:查詢用戶名以“J”開(kāi)頭的所有用戶。Criteria criteria = session.createCriteria(User.class); criteria.add(Expression.like(name,J%); List users = criteria.list();Hibernate語(yǔ)言查詢(Hibernate Query Language,HQL)HQL
33、用面向?qū)ο蟮姆绞缴蒘QLq以類和屬性來(lái)代替表和數(shù)據(jù)列q支持多態(tài)q支持各種關(guān)聯(lián)q減少了SQL的冗余HQL支持所有的關(guān)系數(shù)據(jù)庫(kù)操作q連接(joins,包括Inner/outer/full joins),笛卡爾積(cartesian products)q投影(projection)q聚合(Aggregation,max, avg)和分組(group)q排序(Ordering)q子查詢(Subqueries)qSQL函數(shù)(SQL function calls)例子: Hibernate語(yǔ)言查詢(Hibernate Query Language,HQL)簡(jiǎn)單例子:查詢用戶名以“J”開(kāi)頭的所有用戶。Query query = session.createQuery(from User user where like J%); List users = query.list();復(fù)雜例子:從User和Grou
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 便攜式探照燈產(chǎn)品供應(yīng)鏈分析
- 大數(shù)據(jù)分析及應(yīng)用項(xiàng)目教程(Spark SQL)(微課版) 實(shí)訓(xùn)單 實(shí)訓(xùn)1 Hadoop集群環(huán)境搭建
- 光學(xué)閱讀機(jī)產(chǎn)品供應(yīng)鏈分析
- 外語(yǔ)學(xué)習(xí)書(shū)籍出版行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 云梯游樂(lè)設(shè)施產(chǎn)品供應(yīng)鏈分析
- 臨時(shí)性商業(yè)管理行業(yè)經(jīng)營(yíng)分析報(bào)告
- 廢物化學(xué)處理行業(yè)經(jīng)營(yíng)分析報(bào)告
- 電動(dòng)和非電動(dòng)潔面刷商業(yè)機(jī)會(huì)挖掘與戰(zhàn)略布局策略研究報(bào)告
- 主要負(fù)責(zé)人年度安全生產(chǎn)工作述職報(bào)告
- 《采集能量》學(xué)歷案
- 廣東省珠海市子期中學(xué)、梅華中學(xué) 2024-2025 學(xué)年上學(xué)期期中考試七年級(jí)數(shù)學(xué)試題(無(wú)答案)
- 2024年河南省信陽(yáng)市招才引智綠色通道招聘市直事業(yè)單位人員183人高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 第20課清朝君主專制的強(qiáng)化 教案
- 讀懂中國(guó)茶學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2023年中國(guó)郵政集團(tuán)有限公司招聘考試真題
- QCT457-2023救護(hù)車技術(shù)規(guī)范
- DZ∕T 0207-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 硅質(zhì)原料類(正式版)
- 新課標(biāo)背景下的大單元教學(xué)研究:國(guó)內(nèi)外大單元教學(xué)發(fā)展與演進(jìn)綜述
- 新聞采編與制作職業(yè)生涯規(guī)劃
- 走馬燈內(nèi)部蠟燭距離與其旋轉(zhuǎn)速度關(guān)系的探究實(shí)驗(yàn)假設(shè)
- 人教版八年級(jí)上冊(cè)英語(yǔ)全冊(cè)教案(完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
評(píng)論
0/150
提交評(píng)論