ݺߣ

ݺߣShare a Scribd company logo
ӳļ
Ŀ ѧϰ Hibernate ļ hibernate.cfg.xml  ѧϰ Hibernate ӳ *.hbm.xml
Hibernate ļ   Hibernate ļҪݿӺ  Hibernate  ʱĸ ÿ  Hibernate  ļӦһ  Configuration   Hibernate ļָʽ : hibernate.properties hibernate.cfg.xml
hibernate.cfg.xml ij connection.url ݿ URL  connection.username ݿû connection.password ݿû  connection.driver_class ݿ JDBC   show_sql Ƿɵ SQL ־Թԡȡֵ  true | false  dialect ݿķԣݵײݿⲻͬͬ sql 䣬 Hibernate  ݿڷʱŻ  hbm2ddl.auto ֹͣʱԶش»ɾݿģʽȡֵ  create | update | create-drop mapping resource ӳļãļڸȫ· connection.datasource   JNDI Դ
jdbc.fetch_size    jdbc.batch_size jdbc.fetch_size ʵǵ  Statement.setFetchSize()  趨 JDBC  Statement ȡݵʱÿδݿȡļ¼һβѯ 1 ¼ Oracle  JDBC ˵Dz  1  ԰ 1 ȡģֻȡ Fetch Size ¼Щ¼Ժȥݿȡ Fetch Size ݡ˴ʡνڴġȻ Fetch Size Խ󣬶ݿĴԽ٣ٶԽ죻 Fetch Size ԽСݿĴԽ࣬ٶԽ Oracle ݿ JDBC Ĭϵ Fetch Size=10 һص趨ݲԣ Fetch Size=50 ʱܻ 1 ֮࣬ Fetch Size=100 ܻܼ 20%  Fetch Size ľͲˡʹ Oracle ʱ Fetch Size 赽 50 еݿⶼ֧ Fetch Size ԣ MySQL Ͳ֧֡ MySQL һ¾Ͱ 1 ¼ȫȡڴĻdzdzˣûʲôð취 hibernate.jdbc.batch_size 趨ݿɾºʱδСе൱ Buffer С˼ Batch Size Խݿⷢ sql ĴԽ٣ٶȾԽ졣Խǵ Batch Size=0 ʱʹ Hibernate  Oracle ݿɾ 1 ¼Ҫ 25 룬 Batch Size = 50 ʱɾҪ 5 룡ɼжô Oracle ݿ  Batch Size = 30  ʱȽϺʡ ѡdzҪӰ Hibernate  CRUD(create,read,update,delete)  !
  c3p0 ݿӳ  c3p0 ӳ Hibernate ƼʹõӳأҪʹøӳʱҪ c3p0  jar   WEB-INF    lib  Ŀ¼
POJO  ݿӳļ *.hbm.xml POJO  ͹ϵݿ֮ӳһ XML ĵ (XML document) 塣ӳ䰴 POJO ĶDZĶ塣 ͨ  POJO  ݿӳļ Hibernate ־ûݱ֮ĶӦϵҲ־ûݿ֮ĶӦϵ
ӳļʾ
ӳļ˵ hibernate-mapping Σ Class  id  :property Զ :many-to-one  |  one-to-one  :set | list | map | array one-to-many many-to-many  :subclass | joined-subclass  :component | any  ѯ :query òѯ䣬ڶݿѯͳһŻ ע⣺һ Hibernate-mapping пͬʱࡣ
hibernate-mapping <hibernate-mapping schema=&quot;schemaName&quot;  catalog=&quot;catalogName&quot; default-cascade=&quot;cascade_style&quot;    default-access=&quot;field|property|ClassName&quot;  default-lazy=&quot;true|false&quot;  auto-import=&quot;true|false&quot;  package=&quot;package.name&quot;   />   hibernate-mapping    hibernate  ӳļĸԪ schema ( ѡ ):  ݿ schema ơ catalog ( ѡ ):  ݿ catalog ơ  default-cascade ( ѡ  -  ĬΪ  none):  Ĭϵļ  default-access ( ѡ  -  ĬΪ  property): Hibernate ԵIJԡͨʵ PropertyAccessor ӿԶ塣  default-lazy ( ѡ  -  ĬΪ  true):  ָδȷע lazy Ե Java Ժͼ࣬  Hibernate ȡʲôĬϼط  auto-import ( ѡ  -  ĬΪ  true):  ָǷڲѯʹ÷ȫ޶ڱӳļеࣩ  package ( ѡ ):  ָһǰ׺ӳĵûָȫ޶ ʹΪ
class <class  name=&quot;ClassName&quot;  table=&quot;tableName&quot;   discriminator-value=&quot;discriminator_value&quot;  mutable=&quot;true|false&quot;  schema=&quot;owner&quot;  catalog=&quot;catalog&quot;  proxy=&quot;ProxyInterface&quot;  dynamic-update=&quot;true|false&quot;  dynamic-insert=&quot;true|false&quot;  select-before-update=&quot;true|false&quot;  polymorphism=&quot;implicit|explicit&quot;  where=&quot;arbitrary sql where condition&quot;  persister=&quot;PersisterClass&quot;  batch-size=&quot;N&quot;  optimistic-lock=&quot;none|version|dirty|all&quot;  lazy=&quot;true|false&quot;  entity-name=&quot;EntityName&quot;  check=&quot;arbitrary sql check condition&quot;  rowid=&quot;rowid&quot;  subselect=&quot;SQL expression&quot;  abstract=&quot;true|false&quot;  node=&quot;element-name&quot;  />   Class һ־û   name ( ѡ ):  ־û߽ࣨӿڣ table ( ѡ  -  Ĭķȫ޶ ):  Ӧݿ discriminator-value ( ѡ  -  ĬϺһ ):  һֲֵͬڶ̬ΪʱʹáԽֵܵ  null    not null
 -id <id  name=&quot;propertyName&quot;  type=&quot;typename&quot;  column=&quot;column_name&quot;  unsaved-value=&quot;null|any|none|undefined|id_value&quot;  access=&quot;field|property|ClassName&quot;  node=&quot;element-name|@attribute- name|element/@attribute|.&quot;> <generator class=&quot;generatorClass&quot;/>  </id>  Id ӳ붨ӦݿֶΡһ JavaBean ԣ ΪÿһʵΨһıʶ <id>  Ԫض˸Եݿֶεӳ䡣   name ( ѡ ):  ʶ־ûԵ֡  type ( ѡ ):  ʶ Hibernate ͵֡  column ( ѡ  -  ĬΪ ):  ֶε֡
ɲ generator   ѡ <generator> Ԫһ Java ֣ Ϊó־ûʵΨһıʶʵҪijЩֵ߳ʼ  <param> Ԫݡ
ɲ generator еʵ org.hibernate.id.IdentifierGenerator ӿڡijЩӦóѡṩԼضʵ֡Ȼ  Hibernate ṩ˺ܶõʵ :   Ƽʹ
ͣ property <property  name=&quot;propertyName&quot;  column=&quot;column_name&quot;  type=&quot;typename&quot;  lazy=&quot;true|false&quot;  unique=&quot;true|false&quot;  not-null=&quot;true|false&quot;   optimistic-lock=&quot;true|false&quot; />  property Ϊඨһ־û ,JavaBean   name:  Ե , Сдĸͷ  column ( ѡ  -  ĬΪ ):  Ӧݿֶ  type ( ѡ ):  һ Hibernate ͵֡  lazy ( ѡ  -  ĬΪ  false):  ָʵһαʱǷӳץȡ fetched lazily   unique ( ѡ ):  ΪֶΨһԼ not-null ( ѡ ): ΪֶӷǿԼ  optimistic-lock ( ѡ  -  ĬΪ  true):  ָʱǷҪֹ optimistic lock
Hibernate ӳ
Hibernate ӳ
ӳ伯 Դ : ļԣ List  Set ȼ Map ṹļԣÿֵжӦ Key ӳ  ӳԪش¼֣   list: ӳ List   set: ӳ Set   map: ӳ Map   array: ӳ鼯  bag: ӳ򼯺  idbag: ӳ򼯺ϣΪ߼
List ӳ List 򼯺ϣ˳־ûݿʱҲһʾԪصĴ򡣿ij־û࣬ News иԣ schools ԶӦѧУֻԽӿУ schools  List  ArrayList, üԱʹʵɳʼ
List ӳ Ӧӳʱ list ԪҪ list-index Ԫӳ򼯺ϵĴСϵԵֵıУ־û洢ͬһڡ Key ԪӳС
List ӳ Գ
List ӳ ɵıݣ person_table
List ӳ ɵıݣ school_table
Set ӳ Set ӳ List dzƣΪ Set ģ ظ ļϡ set Ԫʹ index ԪָԪشӳļ List ƣʹ set Ԫʱ index 漯ϵĴ
Set ӳ Գ
Set ӳ ɵıݣ school_table עӳ  Set  ʱ  element  Ԫذ  not-null =   true    ԣ򼯺ԱԹ־ûԪΪñû  List  Բᣬ List  кԪشΪ
bag Ԫӳ  bag ԪؼȿΪ List ӳ䣬ҲΪ Collection ӳ䡣ּԣʹ bag Ԫضӳ򼯺ϣԶӦıû Bag  ԪֻҪ  key  ԪӳУʹ  element  Ԫӳ伯ԵÿԪء
Map   Map ҪӳֵҪӳ Key ӳ Map ʱͬҪָУͬʱָ Map  Key Сϵͳк Key Ϊ  Map ʹ map Ԫӳʱ map ԪҪ key  map-key Ԫء key ԪӳУ map-key Ԫӳ Map ϵ Key  map-key  element Ԫضȷ type
Եܵķ  ڼԣͨƼʹ ӳټز νӳټؾǵϵͳҪʹüʱŴݿװعݡ Hibernate ԼĬϲӳټأijЩΪ set,  list  map Ԫ lazy=  false  ȡӳټء ɽϷֳࣺ 򼯺ϣԪؿԸ Key  Index   򼯺ϣԪֻܱ  򼯺ӵ  key    index  ɵϵӡɾ޸ӵнϺõܱ  ----  ѾЧ  Hibernate  Ѹٵҵݡ ӳ Set ʱ element Ԫذ not-null=  true  ԣ򼯺ԱԹ־ûԪΪñûܽϲ ƽϺõ Hiberate domain Object Уͨ inverse=  true  ԣʱ϶˲ٿƹϵ迼Ǽϵĸܡ
ӳ Ե˼dz־ûԼȲǻͣҲ  String  ַijԵͿԶࡣ
ӳ Ȼ޷ֱ  property  ӳ  name  ԡΪӳԣ  Hibernate  ṩ  component  Ԫءÿ  component  ԪӳһԣԱָԵͣ component  Ԫе  class  ȷ͡
ӳ Գ
ӳ ɵıݣ worker_table
ӳ ϳ˴  String  ַ⣬Դ͡ʵϣ£ŵĶ͡
ӳ м  POJO  Ҫʹ  set, list, bag  ȼԪӳ伯ԡԪַͨʹ  element  ӳ伯ԪؼɡԪҲǶ࣬ʹ  composite-element  Ԫӳ伯Ԫء composite-element  ԪӳһͣҪ  class  ԪȷԪصͣԪػ֧  property  Ԫ͵
Hibernate  Ĺϵӳ ͹еĶйڵġϵҪ֪ʶϵࣺ ϵֻҪʹ   1-1   1-N( Ƽʹ )   N-1   N-N ˫ϵ˿໥ ˫  1-1 ˫  1-N ˫  N-N
  N-1   N-1  ֻ  N  һ˿Է  1  һˡģͣˣ Person Ӧͬһַ Address ֻҪʵҵӦĵַʵ塣Ĵijַҵȫס
  N-1 Person    Address  ԣԲһͨԣһ־û࣬ʹ  many-to-one   Ԫӳ  N-1  ij־ûԡ many-to-one  Ԫص  property  Ԫأӳ־ûijԣǸԪӳǹ־ûࡣ  property  Ԫƣ many-to-one  ԪҲӵ  name  ԣȷԵ֣ column  ȷ е .
  N-1 ɵı person_table Address_table
ĵ  1-1   1-1  POJO    N-1  û˿ ĵ  1-1  ӳļֻҪԭе  many-to-one  Ԫ  unique=  true  Աʾ  N  һ˱Ψһ ,N һΨһԼ ,  Ϊ  1-1. person_table
ĵ  1-1 ij־û಻ӵԼɹฺɡ one-to-one ԪӳԣΪ one-to-one Ԫ constrained=&quot;true&quot; ԣɹɡ
ĵ  1-1 person_table
  1-N   1-N    POJO  ҪʹüԡΪһһҪ  N  һˣ  N  һ˽Լϵʽ֡ Ƽʹõ  1-N   ʹ  1  һ˿ƹϵʱ  update  䡣 ʱ޷ͬʱУ޷ΪӷǿԼ
  N-N   N-N  POJO    1-N  û˿ ӳ伯ƣΪ set  list ȼԪ  key  ԪأӳС뼯ӳ䲻ͬǣ  N-N  ʱеԪʹ  many-to-many ʹ  element  Ԫ N-N  Ĺʹӱ
  N-N   Գ
  N-N ɵıݣ address_table person_table person_address_table
˫  1-N   1-N  Ĺ Hibernate  Ƽʹ˫ҲҪ  1  һ˿ƹϵʹ  N  һ˿ƹϵ ˫  1-N    N-1  ȫͬ 1 0n
˫  1-N 1  һҪʹüԪӳϵԪͬҪ  key  ԪأҪʹ  one-to-many  Ԫӳ
˫  1-N N  һҪ  many-to-one  Ԫӳԡ ? ע⣺ļУ־ûļҪָеʱʡԡΪʹӱ 1-N ֻ N һ˵ıУָͬ¹ӳָеϵͳԶɣϵͳѱԶɵͬ
˫  1-N Գ 1:
˫  1-N ɵıݣ customers_table orders_table
˫  1-N Գ 1   sql  䣺  save(customer) û save(order) ȴִ SQL ɵ SQL ֪û  TongGang  ӵ Customers еͬʱҲ  order1  order2 ӵ Orders УΪ  Customers.hbm.xml  ӳУ set ڵ cascade=save-update , Ե Customers ʱҲԶӦ Orders
˫  1-N ע͵Գ  1  еĶûĴ룺 ͬ  sql  䣬ͬݱ customers_table  в orders_table в  Customers.hbm.xml  set ڵм  inverse=true , 仰˼ǽȨȥ Orders Ҳû붩֮ϵҪ Orders ȷҲԼĸûĴע͵Ȼû˶ΪûѾȨ Hibernate  save ʱ򲢲֪ĸûȻ Customers_ID ֵֶ
˫  1-N  Customers.hbm.xml е  inverse=true  ȥ  ɵ  sql  䣺 ݿݸһͬ ԭ Hibernate Ƚ־ûУΪע˶ûĴ룬 Hibernate ȲֵȻٸû Orders   Customers_ID ֶ޸ΪȷֵܴʱIJӰܣͬʱܽ customers_ID ֶζΪ not null
˫  1-N  inverse=true ϣûע͵  ɵ  sql    нǽ ûӵȥ . ǽĸûҲǹ  customers_ID  ֶΣû  Set orders = new HashSet(); ʼΪյģȻûûڵ orders ԻΪգûв Hibernate ڱûʱжϼΪգȥӶ .
inverse  ֻ ϱ  set/map/list/array/bag  inverse    Hibernate  У inverse  ָ˹ϵķ򡣹 ϵ  inverse = false  Ϊά ϵ û  inverse=true  £߶ά ϵ    1-N  ϵУ  many  Ϊط (inverse = false)  ܸ ( ҪԪ׼סȫ֣ ̫ܣҪȫ֪Ԫף׵Ķ )   1-N  ϵУ  1  Ϊط   update  䡣 ʱ޷ͬʱУ޷ΪӷǿԼ
cascade ֻ ϵ  cascade ԣ many-to-one  one-to-one ,set(map, bag, idbag, list, array) + one-to-many(many-to-many) ָǵطִвʱ󣨱Ƿ ִͬͬһ pojo ĹϵԵĹϵ  ط  --    Ĺ ϵϵһ set ô set еÿһ Ԫء һ cascade ܴǰһ   ز  һ     inverse  ָǹϵĿƷ򣬶 cascade ָDz㼶֮
cascade cascade ԵĿѡֵ all :  ¾й none ¾йĬֵ save-update ִ save/update/saveOrUpdate ʱй delete ִ delete ʱй delete-orphan ʾɾ¶ delete-orphan ǰߵĻһ㣬Գ־ûĶùϵˣмɾ all-delete-orphan  all  delete-orphan Ϊ
˫ N-N   ˫ N-N Ҫ˶ʹüԣ˶ӶԼԵķʡ˫ N-N Ҳʹӱ  0n 0n
˫ N-N  ˫ N-N ĹӳҪӼԪأӳ伯ԡӦ key ԪӳУԪﻹӦ many-to-many Ԫعʵ  ע⣺˫ N-N ߶趨ӱıеԪ set  table Ԫصֵָұͬ set ԪصԪأ key  many-to-many ָ column ԣУ key  many-to-many ֱָ־û͹ӱе ߵ key  many-to-many  column ԽͬҲ˵һߵ set Ԫص key  cloumn ֵΪ a,many-to-many  column Ϊ b һߵ set Ԫص key  column ֵ b,many-to-many  column ֵΪ a.
˫ 1-1    1-1 ӳԣʹӱ˫ 1-1 ͬӳԡ ˫ 1-1 Ҫ޸ POJO ࣬߶ӶԹķ
˫ 1-1   ڻ 1-1 ԴһߣҪһˣ many-to-one ԪءΪ many-to-one Ԫ unique=  true    ʾΪ 1-1  name ָԵ һҪʹ one-to-one ԪأԪʹ name ָΪϵͳòΪһУʹ property-ref ù property-ref: ָĿʵıõСñùϵ    ˵ʹ p ָӦõСӦֻݿݿ  ----  ڴµݿģʽʱӦر
˫ 1-1
˫ 1-1  ɵı person_table address_table
˫ 1-1   ӳ : ָһ˵ʹ foreign ԣ ݶԷԼԼܶ  һ߶Բ foreign ݶԷ Լ  foreign Եһ one-to-one Ԫӳ ԣ one-to-one ԻӦ constrained=  true   ԣһ one-to-one Ԫӳԡ constrained( Լ ) : ӦıӦݿͱĶӦݿ֮䣬ͨһöԼ
˫ 1-1
˫ 1-1  ɵı person_table address_table
̳ӳ ijԶԣ̳кͶ̬ĸ Hibernate  ļ̳ӳ־û֮ļ̳йϵ磺˺ѧ֮Ĺϵѧ̳ˣΪѧһˣ˽вѯѧʵҲõ
̳ӳ Hibernate ּ֧̳ӳԣ ÿһű (table per concrete class)  ģеÿһʵӳ䵽һıУҲ˵ڹϵģпģеļ̳йϵͶ̬  ÿֲṹһű (table per class hierarchy)  ڼ̳йϵеʹͬһҪݿӶ͵ֶΡ  ÿһű (table per subclass)  ģеÿӳ䵽һͨϵģе֮ļ̳йϵҲ൱ڰģ͵Ľṹݿеı֮ͨļ̳йϵ
  subclass  Ԫصļ̳ӳ   subclass  Ԫصļ̳ӳʵ ڼ̳йϵеʹͬһ ӳ£̳ʵͬһڡΪʵȫͬһУҪڸñһУʹøÿм¼ĸʵ ---- бΪ (discriminator). ӳ£ʹ  subclass  ӳ࣬ʹ  discriminator-value  ָеֵ
  subclass  Ԫصļ̳ӳ
  subclass  Ԫصļ̳ӳ ɵı person_table עඨֶζзǿԼΪЩֶӷǿԼôʵЩиûֵ⽫ݿԳͻ¸ʵ޷浽ݿ
  joined-subclass  Ԫصļ̳ӳ   joined-subclass  Ԫصļ̳ӳʵ ÿһű ӳʱʵڸУʵɸͬ洢ΪʵҲһĸʵ˱ȻҲ˸ʵԡǽ͸๲еԱڸУӵԣ򱣴С ӳ£ʹüУҪΪÿʹ  key  Ԫӳ乲븸ʶԵ̳ͬȺܲѯһʵʱҪԽΪһαڶС ӵԿӷǿԼΪԺ͸ûбͬһ
  joined-subclass  Ԫصļ̳ӳ
  joined-subclass  Ԫصļ̳ӳ ɵı person_table student_table
  union-subclass  Ԫصļ̳ӳ   union-subclass  Ԫؿʵֽ ÿһʵӳ䵽һıС union-subclass    joined-subclass  ӳƣӵҲзǿԼ  ---  ʵݱڸУʵݱС   joined-subclass  ͬǣʵݽУڸûκμ¼ ӳ£ֶλȸӳֶҪ࣬ΪֶεڸֶμԵܺ ӳ£ȲҪʹüУҲʹ  key  Ԫӳ乲 .
  union-subclass  Ԫصļ̳ӳ
  union-subclass  Ԫصļ̳ӳ ɵı person_table student_table
ּ̳ӳ䷽ʽıȽ  union-subclass subclass joined-subclass
С Hibernate ļ jdbc.fetch_size jdbc.batch_size POJO  ݿӳļ *.hbm.xml ɲ generator ӳ伯 ӳټز ӳ ϵӳ䣺˫  1-N ̳ӳ

More Related Content

What's hot (12)

lwdba C _ԭʼapYώȡʽ
lwdba C _ԭʼapYώȡʽlwdba C _ԭʼapYώȡʽ
lwdba C _ԭʼapYώȡʽ
d
?
Patterns in Zend Framework
Patterns in Zend FrameworkPatterns in Zend Framework
Patterns in Zend Framework
Jace Ju
?
I Love Joomla - Joomla!ѾǔW
 I Love Joomla - Joomla!ѾǔW I Love Joomla - Joomla!ѾǔW
I Love Joomla - Joomla!ѾǔW
ilovejoomla
?
I Love Joomla! ѾǔW 0212
I Love Joomla! ѾǔW 0212I Love Joomla! ѾǔW 0212
I Love Joomla! ѾǔW 0212
Asika Simon
?
Java CollectionsеFail Fast
Java CollectionsеFail FastJava CollectionsеFail Fast
Java CollectionsеFail Fast
yiditushe
?
ڶ
ڶڶ
ڶ
?
Moodle Ŀֲ᣺д׼
Moodle Ŀֲ᣺д׼Moodle Ŀֲ᣺д׼
Moodle Ŀֲ᣺д׼
YUCHENG HU
?
ϡ¼ģʽԭ
ϡ¼ģʽԭϡ¼ģʽԭ
ϡ¼ģʽԭ
޳-̳
?
lwdba C _ԭʼapYώȡʽ
lwdba C _ԭʼapYώȡʽlwdba C _ԭʼapYώȡʽ
lwdba C _ԭʼapYώȡʽ
d
?
Patterns in Zend Framework
Patterns in Zend FrameworkPatterns in Zend Framework
Patterns in Zend Framework
Jace Ju
?
I Love Joomla - Joomla!ѾǔW
 I Love Joomla - Joomla!ѾǔW I Love Joomla - Joomla!ѾǔW
I Love Joomla - Joomla!ѾǔW
ilovejoomla
?
I Love Joomla! ѾǔW 0212
I Love Joomla! ѾǔW 0212I Love Joomla! ѾǔW 0212
I Love Joomla! ѾǔW 0212
Asika Simon
?
Java CollectionsеFail Fast
Java CollectionsеFail FastJava CollectionsеFail Fast
Java CollectionsеFail Fast
yiditushe
?
ڶ
ڶڶ
ڶ
?
Moodle Ŀֲ᣺д׼
Moodle Ŀֲ᣺д׼Moodle Ŀֲ᣺д׼
Moodle Ŀֲ᣺д׼
YUCHENG HU
?
ϡ¼ģʽԭ
ϡ¼ģʽԭϡ¼ģʽԭ
ϡ¼ģʽԭ
޳-̳
?

Viewers also liked (7)

Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...
Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...
Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...
Skolverket
?
TUGAS mengenali minat dan bakat
TUGAS mengenali minat dan bakatTUGAS mengenali minat dan bakat
TUGAS mengenali minat dan bakat
ardianastevi
?
Following the users interests in mobile context aware recommender systems
Following the users interests in mobile context aware recommender systemsFollowing the users interests in mobile context aware recommender systems
Following the users interests in mobile context aware recommender systems
Bouneffouf Djallel
?
Penjelasan konvensi
Penjelasan konvensiPenjelasan konvensi
Penjelasan konvensi
Agoes Santosa
?
Metode Wawancara (Psikologi Umum)
Metode Wawancara (Psikologi Umum)Metode Wawancara (Psikologi Umum)
Metode Wawancara (Psikologi Umum)
atone_lotus
?
ADMINISTRASI TES PSIKOLOGI
ADMINISTRASI TES PSIKOLOGIADMINISTRASI TES PSIKOLOGI
ADMINISTRASI TES PSIKOLOGI
Husna Sholihah
?
Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...
Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...
Presentation fr?n grundskolan, sameskolan och specialskolans kursplanekonfere...
Skolverket
?
TUGAS mengenali minat dan bakat
TUGAS mengenali minat dan bakatTUGAS mengenali minat dan bakat
TUGAS mengenali minat dan bakat
ardianastevi
?
Following the users interests in mobile context aware recommender systems
Following the users interests in mobile context aware recommender systemsFollowing the users interests in mobile context aware recommender systems
Following the users interests in mobile context aware recommender systems
Bouneffouf Djallel
?
Metode Wawancara (Psikologi Umum)
Metode Wawancara (Psikologi Umum)Metode Wawancara (Psikologi Umum)
Metode Wawancara (Psikologi Umum)
atone_lotus
?
ADMINISTRASI TES PSIKOLOGI
ADMINISTRASI TES PSIKOLOGIADMINISTRASI TES PSIKOLOGI
ADMINISTRASI TES PSIKOLOGI
Husna Sholihah
?

Similar to Hibernate ӳļ (20)

Linux c++ ֮װ -ƪ--v0.3--20120509
Linux c++ ֮װ -ƪ--v0.3--20120509Linux c++ ֮װ -ƪ--v0.3--20120509
Linux c++ ֮װ -ƪ--v0.3--20120509
tidesq
?
ᾱԲٱ̳
ᾱԲٱ̳ᾱԲٱ̳
ᾱԲٱ̳
Shilong Sang
?
Hibernate
HibernateHibernate
Hibernate
Henry Huang
?
Ecma script edition5-С
Ecma script edition5-СEcma script edition5-С
Ecma script edition5-С
lydiafly
?
02 Ա(java)
02  Ա(java)02  Ա(java)
02 Ա(java)
Yan Li
?
徱ֲ
徱ֲ徱ֲ
徱ֲ
?
徱ֲ
徱ֲ徱ֲ
徱ֲ
www.tujia.com
?
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:Collection
Brad Chao
?
Js tree
Js treeJs tree
Js tree
lotusfox
?
Java Script 漼
Java Script 漼Java Script 漼
Java Script 漼
bigqiang zou
?
Row SetѧϰV1.1
Row SetѧϰV1.1Row SetѧϰV1.1
Row SetѧϰV1.1
Zianed Hou
?
ԻǾ嶯̬ܾ
ԻǾ嶯̬ܾԻǾ嶯̬ܾ
ԻǾ嶯̬ܾ
卿Ƽ
?
functional-scala
functional-scalafunctional-scala
functional-scala
wang hongjiang
?

Hibernate ӳļ

  • 2. Ŀ ѧϰ Hibernate ļ hibernate.cfg.xml ѧϰ Hibernate ӳ *.hbm.xml
  • 3. Hibernate ļ Hibernate ļҪݿӺ Hibernate ʱĸ ÿ Hibernate ļӦһ Configuration Hibernate ļָʽ : hibernate.properties hibernate.cfg.xml
  • 4. hibernate.cfg.xml ij connection.url ݿ URL connection.username ݿû connection.password ݿû connection.driver_class ݿ JDBC show_sql Ƿɵ SQL ־Թԡȡֵ true | false dialect ݿķԣݵײݿⲻͬͬ sql 䣬 Hibernate ݿڷʱŻ hbm2ddl.auto ֹͣʱԶش»ɾݿģʽȡֵ create | update | create-drop mapping resource ӳļãļڸȫ· connection.datasource JNDI Դ
  • 5. jdbc.fetch_size jdbc.batch_size jdbc.fetch_size ʵǵ Statement.setFetchSize() 趨 JDBC Statement ȡݵʱÿδݿȡļ¼һβѯ 1 ¼ Oracle JDBC ˵Dz 1 ԰ 1 ȡģֻȡ Fetch Size ¼Щ¼Ժȥݿȡ Fetch Size ݡ˴ʡνڴġȻ Fetch Size Խ󣬶ݿĴԽ٣ٶԽ죻 Fetch Size ԽСݿĴԽ࣬ٶԽ Oracle ݿ JDBC Ĭϵ Fetch Size=10 һص趨ݲԣ Fetch Size=50 ʱܻ 1 ֮࣬ Fetch Size=100 ܻܼ 20% Fetch Size ľͲˡʹ Oracle ʱ Fetch Size 赽 50 еݿⶼ֧ Fetch Size ԣ MySQL Ͳ֧֡ MySQL һ¾Ͱ 1 ¼ȫȡڴĻdzdzˣûʲôð취 hibernate.jdbc.batch_size 趨ݿɾºʱδСе൱ Buffer С˼ Batch Size Խݿⷢ sql ĴԽ٣ٶȾԽ졣Խǵ Batch Size=0 ʱʹ Hibernate Oracle ݿɾ 1 ¼Ҫ 25 룬 Batch Size = 50 ʱɾҪ 5 룡ɼжô Oracle ݿ Batch Size = 30 ʱȽϺʡ ѡdzҪӰ Hibernate CRUD(create,read,update,delete) !
  • 6. c3p0 ݿӳ c3p0 ӳ Hibernate ƼʹõӳأҪʹøӳʱҪ c3p0 jar WEB-INF lib Ŀ¼
  • 7. POJO ݿӳļ *.hbm.xml POJO ͹ϵݿ֮ӳһ XML ĵ (XML document) 塣ӳ䰴 POJO ĶDZĶ塣 ͨ POJO ݿӳļ Hibernate ־ûݱ֮ĶӦϵҲ־ûݿ֮ĶӦϵ
  • 9. ӳļ˵ hibernate-mapping Σ Class id :property Զ :many-to-one | one-to-one :set | list | map | array one-to-many many-to-many :subclass | joined-subclass :component | any ѯ :query òѯ䣬ڶݿѯͳһŻ ע⣺һ Hibernate-mapping пͬʱࡣ
  • 10. hibernate-mapping <hibernate-mapping schema=&quot;schemaName&quot; catalog=&quot;catalogName&quot; default-cascade=&quot;cascade_style&quot; default-access=&quot;field|property|ClassName&quot; default-lazy=&quot;true|false&quot; auto-import=&quot;true|false&quot; package=&quot;package.name&quot; /> hibernate-mapping hibernate ӳļĸԪ schema ( ѡ ): ݿ schema ơ catalog ( ѡ ): ݿ catalog ơ default-cascade ( ѡ - ĬΪ none): Ĭϵļ default-access ( ѡ - ĬΪ property): Hibernate ԵIJԡͨʵ PropertyAccessor ӿԶ塣 default-lazy ( ѡ - ĬΪ true): ָδȷע lazy Ե Java Ժͼ࣬ Hibernate ȡʲôĬϼط auto-import ( ѡ - ĬΪ true): ָǷڲѯʹ÷ȫ޶ڱӳļеࣩ package ( ѡ ): ָһǰ׺ӳĵûָȫ޶ ʹΪ
  • 11. class <class name=&quot;ClassName&quot; table=&quot;tableName&quot; discriminator-value=&quot;discriminator_value&quot; mutable=&quot;true|false&quot; schema=&quot;owner&quot; catalog=&quot;catalog&quot; proxy=&quot;ProxyInterface&quot; dynamic-update=&quot;true|false&quot; dynamic-insert=&quot;true|false&quot; select-before-update=&quot;true|false&quot; polymorphism=&quot;implicit|explicit&quot; where=&quot;arbitrary sql where condition&quot; persister=&quot;PersisterClass&quot; batch-size=&quot;N&quot; optimistic-lock=&quot;none|version|dirty|all&quot; lazy=&quot;true|false&quot; entity-name=&quot;EntityName&quot; check=&quot;arbitrary sql check condition&quot; rowid=&quot;rowid&quot; subselect=&quot;SQL expression&quot; abstract=&quot;true|false&quot; node=&quot;element-name&quot; /> Class һ־û name ( ѡ ): ־û߽ࣨӿڣ table ( ѡ - Ĭķȫ޶ ): Ӧݿ discriminator-value ( ѡ - ĬϺһ ): һֲֵͬڶ̬ΪʱʹáԽֵܵ null not null
  • 12. -id <id name=&quot;propertyName&quot; type=&quot;typename&quot; column=&quot;column_name&quot; unsaved-value=&quot;null|any|none|undefined|id_value&quot; access=&quot;field|property|ClassName&quot; node=&quot;element-name|@attribute- name|element/@attribute|.&quot;> <generator class=&quot;generatorClass&quot;/> </id> Id ӳ붨ӦݿֶΡһ JavaBean ԣ ΪÿһʵΨһıʶ <id> Ԫض˸Եݿֶεӳ䡣 name ( ѡ ): ʶ־ûԵ֡ type ( ѡ ): ʶ Hibernate ͵֡ column ( ѡ - ĬΪ ): ֶε֡
  • 13. ɲ generator ѡ <generator> Ԫһ Java ֣ Ϊó־ûʵΨһıʶʵҪijЩֵ߳ʼ <param> Ԫݡ
  • 14. ɲ generator еʵ org.hibernate.id.IdentifierGenerator ӿڡijЩӦóѡṩԼضʵ֡Ȼ Hibernate ṩ˺ܶõʵ : Ƽʹ
  • 15. ͣ property <property name=&quot;propertyName&quot; column=&quot;column_name&quot; type=&quot;typename&quot; lazy=&quot;true|false&quot; unique=&quot;true|false&quot; not-null=&quot;true|false&quot; optimistic-lock=&quot;true|false&quot; /> property Ϊඨһ־û ,JavaBean name: Ե , Сдĸͷ column ( ѡ - ĬΪ ): Ӧݿֶ type ( ѡ ): һ Hibernate ͵֡ lazy ( ѡ - ĬΪ false): ָʵһαʱǷӳץȡ fetched lazily unique ( ѡ ): ΪֶΨһԼ not-null ( ѡ ): ΪֶӷǿԼ optimistic-lock ( ѡ - ĬΪ true): ָʱǷҪֹ optimistic lock
  • 18. ӳ伯 Դ : ļԣ List Set ȼ Map ṹļԣÿֵжӦ Key ӳ ӳԪش¼֣ list: ӳ List set: ӳ Set map: ӳ Map array: ӳ鼯 bag: ӳ򼯺 idbag: ӳ򼯺ϣΪ߼
  • 19. List ӳ List 򼯺ϣ˳־ûݿʱҲһʾԪصĴ򡣿ij־û࣬ News иԣ schools ԶӦѧУֻԽӿУ schools List ArrayList, üԱʹʵɳʼ
  • 20. List ӳ Ӧӳʱ list ԪҪ list-index Ԫӳ򼯺ϵĴСϵԵֵıУ־û洢ͬһڡ Key ԪӳС
  • 22. List ӳ ɵıݣ person_table
  • 23. List ӳ ɵıݣ school_table
  • 24. Set ӳ Set ӳ List dzƣΪ Set ģ ظ ļϡ set Ԫʹ index ԪָԪشӳļ List ƣʹ set Ԫʱ index 漯ϵĴ
  • 26. Set ӳ ɵıݣ school_table עӳ Set ʱ element Ԫذ not-null = true ԣ򼯺ԱԹ־ûԪΪñû List Բᣬ List кԪشΪ
  • 27. bag Ԫӳ bag ԪؼȿΪ List ӳ䣬ҲΪ Collection ӳ䡣ּԣʹ bag Ԫضӳ򼯺ϣԶӦıû Bag ԪֻҪ key ԪӳУʹ element Ԫӳ伯ԵÿԪء
  • 28. Map Map ҪӳֵҪӳ Key ӳ Map ʱͬҪָУͬʱָ Map Key Сϵͳк Key Ϊ Map ʹ map Ԫӳʱ map ԪҪ key map-key Ԫء key ԪӳУ map-key Ԫӳ Map ϵ Key map-key element Ԫضȷ type
  • 29. Եܵķ ڼԣͨƼʹ ӳټز νӳټؾǵϵͳҪʹüʱŴݿװعݡ Hibernate ԼĬϲӳټأijЩΪ set, list map Ԫ lazy= false ȡӳټء ɽϷֳࣺ 򼯺ϣԪؿԸ Key Index 򼯺ϣԪֻܱ 򼯺ӵ key index ɵϵӡɾ޸ӵнϺõܱ ---- ѾЧ Hibernate Ѹٵҵݡ ӳ Set ʱ element Ԫذ not-null= true ԣ򼯺ԱԹ־ûԪΪñûܽϲ ƽϺõ Hiberate domain Object Уͨ inverse= true ԣʱ϶˲ٿƹϵ迼Ǽϵĸܡ
  • 30. ӳ Ե˼dz־ûԼȲǻͣҲ String ַijԵͿԶࡣ
  • 31. ӳ Ȼ޷ֱ property ӳ name ԡΪӳԣ Hibernate ṩ component Ԫءÿ component ԪӳһԣԱָԵͣ component Ԫе class ȷ͡
  • 32. ӳ Գ
  • 34. ӳ ϳ˴ String ַ⣬Դ͡ʵϣ£ŵĶ͡
  • 35. ӳ м POJO Ҫʹ set, list, bag ȼԪӳ伯ԡԪַͨʹ element ӳ伯ԪؼɡԪҲǶ࣬ʹ composite-element Ԫӳ伯Ԫء composite-element ԪӳһͣҪ class ԪȷԪصͣԪػ֧ property Ԫ͵
  • 36. Hibernate Ĺϵӳ ͹еĶйڵġϵҪ֪ʶϵࣺ ϵֻҪʹ 1-1 1-N( Ƽʹ ) N-1 N-N ˫ϵ˿໥ ˫ 1-1 ˫ 1-N ˫ N-N
  • 37. N-1 N-1 ֻ N һ˿Է 1 һˡģͣˣ Person Ӧͬһַ Address ֻҪʵҵӦĵַʵ塣Ĵijַҵȫס
  • 38. N-1 Person Address ԣԲһͨԣһ־û࣬ʹ many-to-one Ԫӳ N-1 ij־ûԡ many-to-one Ԫص property Ԫأӳ־ûijԣǸԪӳǹ־ûࡣ property Ԫƣ many-to-one ԪҲӵ name ԣȷԵ֣ column ȷ е .
  • 39. N-1 ɵı person_table Address_table
  • 40. ĵ 1-1 1-1 POJO N-1 û˿ ĵ 1-1 ӳļֻҪԭе many-to-one Ԫ unique= true Աʾ N һ˱Ψһ ,N һΨһԼ , Ϊ 1-1. person_table
  • 41. ĵ 1-1 ij־û಻ӵԼɹฺɡ one-to-one ԪӳԣΪ one-to-one Ԫ constrained=&quot;true&quot; ԣɹɡ
  • 42. ĵ 1-1 person_table
  • 43. 1-N 1-N POJO ҪʹüԡΪһһҪ N һˣ N һ˽Լϵʽ֡ Ƽʹõ 1-N ʹ 1 һ˿ƹϵʱ update 䡣 ʱ޷ͬʱУ޷ΪӷǿԼ
  • 44. N-N N-N POJO 1-N û˿ ӳ伯ƣΪ set list ȼԪ key ԪأӳС뼯ӳ䲻ͬǣ N-N ʱеԪʹ many-to-many ʹ element Ԫ N-N Ĺʹӱ
  • 45. N-N Գ
  • 46. N-N ɵıݣ address_table person_table person_address_table
  • 47. ˫ 1-N 1-N Ĺ Hibernate Ƽʹ˫ҲҪ 1 һ˿ƹϵʹ N һ˿ƹϵ ˫ 1-N N-1 ȫͬ 1 0n
  • 48. ˫ 1-N 1 һҪʹüԪӳϵԪͬҪ key ԪأҪʹ one-to-many Ԫӳ
  • 49. ˫ 1-N N һҪ many-to-one Ԫӳԡ ? ע⣺ļУ־ûļҪָеʱʡԡΪʹӱ 1-N ֻ N һ˵ıУָͬ¹ӳָеϵͳԶɣϵͳѱԶɵͬ
  • 50. ˫ 1-N Գ 1:
  • 51. ˫ 1-N ɵıݣ customers_table orders_table
  • 52. ˫ 1-N Գ 1 sql 䣺 save(customer) û save(order) ȴִ SQL ɵ SQL ֪û TongGang ӵ Customers еͬʱҲ order1 order2 ӵ Orders УΪ Customers.hbm.xml ӳУ set ڵ cascade=save-update , Ե Customers ʱҲԶӦ Orders
  • 53. ˫ 1-N ע͵Գ 1 еĶûĴ룺 ͬ sql 䣬ͬݱ customers_table в orders_table в Customers.hbm.xml set ڵм inverse=true , 仰˼ǽȨȥ Orders Ҳû붩֮ϵҪ Orders ȷҲԼĸûĴע͵Ȼû˶ΪûѾȨ Hibernate save ʱ򲢲֪ĸûȻ Customers_ID ֵֶ
  • 54. ˫ 1-N Customers.hbm.xml е inverse=true ȥ ɵ sql 䣺 ݿݸһͬ ԭ Hibernate Ƚ־ûУΪע˶ûĴ룬 Hibernate ȲֵȻٸû Orders Customers_ID ֶ޸ΪȷֵܴʱIJӰܣͬʱܽ customers_ID ֶζΪ not null
  • 55. ˫ 1-N inverse=true ϣûע͵ ɵ sql нǽ ûӵȥ . ǽĸûҲǹ customers_ID ֶΣû Set orders = new HashSet(); ʼΪյģȻûûڵ orders ԻΪգûв Hibernate ڱûʱжϼΪգȥӶ .
  • 56. inverse ֻ ϱ set/map/list/array/bag inverse Hibernate У inverse ָ˹ϵķ򡣹 ϵ inverse = false Ϊά ϵ û inverse=true £߶ά ϵ 1-N ϵУ many Ϊط (inverse = false) ܸ ( ҪԪ׼סȫ֣ ̫ܣҪȫ֪Ԫף׵Ķ ) 1-N ϵУ 1 Ϊط update 䡣 ʱ޷ͬʱУ޷ΪӷǿԼ
  • 57. cascade ֻ ϵ cascade ԣ many-to-one one-to-one ,set(map, bag, idbag, list, array) + one-to-many(many-to-many) ָǵطִвʱ󣨱Ƿ ִͬͬһ pojo ĹϵԵĹϵ ط -- Ĺ ϵϵһ set ô set еÿһ Ԫء һ cascade ܴǰһ ز һ inverse ָǹϵĿƷ򣬶 cascade ָDz㼶֮
  • 58. cascade cascade ԵĿѡֵ all : ¾й none ¾йĬֵ save-update ִ save/update/saveOrUpdate ʱй delete ִ delete ʱй delete-orphan ʾɾ¶ delete-orphan ǰߵĻһ㣬Գ־ûĶùϵˣмɾ all-delete-orphan all delete-orphan Ϊ
  • 59. ˫ N-N ˫ N-N Ҫ˶ʹüԣ˶ӶԼԵķʡ˫ N-N Ҳʹӱ 0n 0n
  • 60. ˫ N-N ˫ N-N ĹӳҪӼԪأӳ伯ԡӦ key ԪӳУԪﻹӦ many-to-many Ԫعʵ ע⣺˫ N-N ߶趨ӱıеԪ set table Ԫصֵָұͬ set ԪصԪأ key many-to-many ָ column ԣУ key many-to-many ֱָ־û͹ӱе ߵ key many-to-many column ԽͬҲ˵һߵ set Ԫص key cloumn ֵΪ a,many-to-many column Ϊ b һߵ set Ԫص key column ֵ b,many-to-many column ֵΪ a.
  • 61. ˫ 1-1 1-1 ӳԣʹӱ˫ 1-1 ͬӳԡ ˫ 1-1 Ҫ޸ POJO ࣬߶ӶԹķ
  • 62. ˫ 1-1 ڻ 1-1 ԴһߣҪһˣ many-to-one ԪءΪ many-to-one Ԫ unique= true ʾΪ 1-1 name ָԵ һҪʹ one-to-one ԪأԪʹ name ָΪϵͳòΪһУʹ property-ref ù property-ref: ָĿʵıõСñùϵ ˵ʹ p ָӦõСӦֻݿݿ ---- ڴµݿģʽʱӦر
  • 64. ˫ 1-1 ɵı person_table address_table
  • 65. ˫ 1-1 ӳ : ָһ˵ʹ foreign ԣ ݶԷԼԼܶ һ߶Բ foreign ݶԷ Լ foreign Եһ one-to-one Ԫӳ ԣ one-to-one ԻӦ constrained= true ԣһ one-to-one Ԫӳԡ constrained( Լ ) : ӦıӦݿͱĶӦݿ֮䣬ͨһöԼ
  • 67. ˫ 1-1 ɵı person_table address_table
  • 68. ̳ӳ ijԶԣ̳кͶ̬ĸ Hibernate ļ̳ӳ־û֮ļ̳йϵ磺˺ѧ֮Ĺϵѧ̳ˣΪѧһˣ˽вѯѧʵҲõ
  • 69. ̳ӳ Hibernate ּ֧̳ӳԣ ÿһű (table per concrete class) ģеÿһʵӳ䵽һıУҲ˵ڹϵģпģеļ̳йϵͶ̬ ÿֲṹһű (table per class hierarchy) ڼ̳йϵеʹͬһҪݿӶ͵ֶΡ ÿһű (table per subclass) ģеÿӳ䵽һͨϵģе֮ļ̳йϵҲ൱ڰģ͵Ľṹݿеı֮ͨļ̳йϵ
  • 70. subclass Ԫصļ̳ӳ subclass Ԫصļ̳ӳʵ ڼ̳йϵеʹͬһ ӳ£̳ʵͬһڡΪʵȫͬһУҪڸñһУʹøÿм¼ĸʵ ---- бΪ (discriminator). ӳ£ʹ subclass ӳ࣬ʹ discriminator-value ָеֵ
  • 71. subclass Ԫصļ̳ӳ
  • 72. subclass Ԫصļ̳ӳ ɵı person_table עඨֶζзǿԼΪЩֶӷǿԼôʵЩиûֵ⽫ݿԳͻ¸ʵ޷浽ݿ
  • 73. joined-subclass Ԫصļ̳ӳ joined-subclass Ԫصļ̳ӳʵ ÿһű ӳʱʵڸУʵɸͬ洢ΪʵҲһĸʵ˱ȻҲ˸ʵԡǽ͸๲еԱڸУӵԣ򱣴С ӳ£ʹüУҪΪÿʹ key Ԫӳ乲븸ʶԵ̳ͬȺܲѯһʵʱҪԽΪһαڶС ӵԿӷǿԼΪԺ͸ûбͬһ
  • 74. joined-subclass Ԫصļ̳ӳ
  • 75. joined-subclass Ԫصļ̳ӳ ɵı person_table student_table
  • 76. union-subclass Ԫصļ̳ӳ union-subclass Ԫؿʵֽ ÿһʵӳ䵽һıС union-subclass joined-subclass ӳƣӵҲзǿԼ --- ʵݱڸУʵݱС joined-subclass ͬǣʵݽУڸûκμ¼ ӳ£ֶλȸӳֶҪ࣬ΪֶεڸֶμԵܺ ӳ£ȲҪʹüУҲʹ key Ԫӳ乲 .
  • 77. union-subclass Ԫصļ̳ӳ
  • 78. union-subclass Ԫصļ̳ӳ ɵı person_table student_table
  • 79. ּ̳ӳ䷽ʽıȽ union-subclass subclass joined-subclass
  • 80. С Hibernate ļ jdbc.fetch_size jdbc.batch_size POJO ݿӳļ *.hbm.xml ɲ generator ӳ伯 ӳټز ӳ ϵӳ䣺˫ 1-N ̳ӳ